1ed0d50c3Schristos /* Opcode table for the H8/300
2*b88e3e88Schristos    Copyright (C) 1991-2020 Free Software Foundation, Inc.
3ed0d50c3Schristos    Written by Steve Chamberlain <sac@cygnus.com>.
4ed0d50c3Schristos 
5ed0d50c3Schristos    This file is part of GDB, the GNU Debugger and GAS, the GNU Assembler.
6ed0d50c3Schristos 
7ed0d50c3Schristos    This program is free software; you can redistribute it and/or modify
8ed0d50c3Schristos    it under the terms of the GNU General Public License as published by
9ed0d50c3Schristos    the Free Software Foundation; either version 3 of the License, or
10ed0d50c3Schristos    (at your option) any later version.
11ed0d50c3Schristos 
12ed0d50c3Schristos    This program is distributed in the hope that it will be useful,
13ed0d50c3Schristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
14ed0d50c3Schristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15ed0d50c3Schristos    GNU General Public License for more details.
16ed0d50c3Schristos 
17ed0d50c3Schristos    You should have received a copy of the GNU General Public License
18ed0d50c3Schristos    along with this program; if not, write to the Free Software
19ed0d50c3Schristos    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
20ed0d50c3Schristos    02110-1301, USA.  */
21ed0d50c3Schristos 
22ed0d50c3Schristos /* Instructions are stored as a sequence of nibbles.
23ed0d50c3Schristos    If the nibble has value 15 or less than the representation is complete.
24ed0d50c3Schristos    Otherwise, we record what it contains with several flags.  */
25ed0d50c3Schristos 
26ed0d50c3Schristos typedef int op_type;
27ed0d50c3Schristos 
28ed0d50c3Schristos enum h8_flags
29ed0d50c3Schristos {
30ed0d50c3Schristos   L_2  =	0x10,
31ed0d50c3Schristos   L_3  =	0x20,
32ed0d50c3Schristos   /* 3 bit constant, zero not accepted.  */
33ed0d50c3Schristos   L_3NZ =	0x30,
34ed0d50c3Schristos   L_4  =	0x40,
35ed0d50c3Schristos   L_5  =	0x50,
36ed0d50c3Schristos   L_8  =	0x60,
37ed0d50c3Schristos   L_8U =	0x70,
38ed0d50c3Schristos   L_16 =	0x80,
39ed0d50c3Schristos   L_16U =	0x90,
40ed0d50c3Schristos   L_24 =	0xA0,
41ed0d50c3Schristos   L_32 =	0xB0,
42ed0d50c3Schristos   L_P  =	0xC0,
43ed0d50c3Schristos 
44ed0d50c3Schristos   /* Mask to isolate the L_x size bits.  */
45ed0d50c3Schristos   SIZE =	0xF0,
46ed0d50c3Schristos 
47ed0d50c3Schristos   REG =		0x0100,
48ed0d50c3Schristos   ABS =		0x0200,
49ed0d50c3Schristos   MEMIND =	0x0300,
50ed0d50c3Schristos   IMM =		0x0400,
51ed0d50c3Schristos   DISP =	0x0500,
52ed0d50c3Schristos   IND =		0x0600,
53ed0d50c3Schristos   POSTINC =	0x0700,
54ed0d50c3Schristos   POSTDEC =	0x0800,
55ed0d50c3Schristos   PREINC =	0x0900,
56ed0d50c3Schristos   PREDEC =	0x0A00,
57ed0d50c3Schristos   PCREL =	0x0B00,
58ed0d50c3Schristos   KBIT =	0x0C00,
59ed0d50c3Schristos   DBIT =	0x0D00,
60ed0d50c3Schristos   CONST_2 =     0x0E00,
61ed0d50c3Schristos   CONST_4 =     0x0F00,
62ed0d50c3Schristos   CONST_8 =     0x1000,
63ed0d50c3Schristos   CONST_16 =    0x1100,
64ed0d50c3Schristos   INDEXB =      0x1200,
65ed0d50c3Schristos   INDEXW =      0x1300,
66ed0d50c3Schristos   INDEXL =      0x1400,
67ed0d50c3Schristos   PCIDXB =      0x1500,
68ed0d50c3Schristos   PCIDXW =      0x1600,
69ed0d50c3Schristos   PCIDXL =      0x1700,
70ed0d50c3Schristos   VECIND =      0x1800,
71ed0d50c3Schristos   LOWREG =      0x1900,
72ed0d50c3Schristos   DATA   =      0x2000,
73ed0d50c3Schristos 
74ed0d50c3Schristos   /* Synonyms.  */
75ed0d50c3Schristos   INC =		POSTINC,
76ed0d50c3Schristos   DEC =		PREDEC,
77ed0d50c3Schristos   /* Control Registers.  */
78ed0d50c3Schristos   CCR =		0x4000,
79ed0d50c3Schristos   EXR =		0x4100,
80ed0d50c3Schristos   MACH = 	0x4200,
81ed0d50c3Schristos   MACL = 	0x4300,
82ed0d50c3Schristos   RESERV1 = 	0x4400,
83ed0d50c3Schristos   RESERV2 = 	0x4500,
84ed0d50c3Schristos   VBR = 	0x4600,
85ed0d50c3Schristos   SBR = 	0x4700,
86ed0d50c3Schristos   MACREG =	0x4800,
87ed0d50c3Schristos   CCR_EXR = 	0x4900,
88ed0d50c3Schristos   VBR_SBR = 	0x4A00,
89ed0d50c3Schristos   CC_EX_VB_SB =	0x4B00,
90ed0d50c3Schristos   RESERV3 =	0x4C00,
91ed0d50c3Schristos   RESERV4 = 	0x4D00,
92ed0d50c3Schristos   RESERV5 = 	0x4E00,
93ed0d50c3Schristos   RESERV6 = 	0x4F00,
94ed0d50c3Schristos 
95ed0d50c3Schristos   /* Mask to isolate the addressing mode bits (REG .. PREDEC).  */
96ed0d50c3Schristos   MODE =	0x7F00,
97ed0d50c3Schristos 
98ed0d50c3Schristos   CTRL = 	0x4000,
99ed0d50c3Schristos 
100ed0d50c3Schristos   NO_SYMBOLS =  0x8000,
101ed0d50c3Schristos   SRC =		0x10000,
102ed0d50c3Schristos   DST =		0x20000,
103ed0d50c3Schristos   OP3 =		0x40000,
104ed0d50c3Schristos   MEMRELAX = 	0x80000,		/* Move insn which may relax.  */
105ed0d50c3Schristos 
106ed0d50c3Schristos   DISPREG =	0x100000,
107ed0d50c3Schristos   IGNORE =	0x200000,
108ed0d50c3Schristos   ABSJMP =	0x400000,
109ed0d50c3Schristos 
110ed0d50c3Schristos   B00 =         0x800000, 		/* Bit 0 must be low.   */
111ed0d50c3Schristos   B01 =         0x1000000, 		/* Bit 0 must be high.  */
112ed0d50c3Schristos   B10 = 	0x2000000, 		/* Bit 1 must be low.   */
113ed0d50c3Schristos   B11 = 	0x4000000, 		/* Bit 1 must be high.  */
114ed0d50c3Schristos   B20 = 	0x8000000, 		/* Bit 2 must be low.   */
115ed0d50c3Schristos   B21 = 	0x10000000, 		/* Bit 2 must be high.  */
116ed0d50c3Schristos   B30 =		0x20000000, 		/* Bit 3 must be low.   */
117ed0d50c3Schristos   B31 =		0x40000000,		/* Bit 3 must be high.  */
118ed0d50c3Schristos   E =  		0x80000000,		/* End of nibble sequence.  */
119ed0d50c3Schristos 
120ed0d50c3Schristos   /* Immediates smaller than 8 bits are always unsigned.  */
121ed0d50c3Schristos   IMM3 =	IMM | L_3,
122ed0d50c3Schristos   IMM4 =	IMM | L_4,
123ed0d50c3Schristos   IMM5 =	IMM | L_5,
124ed0d50c3Schristos   IMM3NZ =	IMM | L_3NZ,
125ed0d50c3Schristos   IMM2 =	IMM | L_2,
126ed0d50c3Schristos 
127ed0d50c3Schristos   IMM8 =	IMM | SRC | L_8,
128ed0d50c3Schristos   IMM8U =	IMM | SRC | L_8U,
129ed0d50c3Schristos   IMM16 =	IMM | SRC | L_16,
130ed0d50c3Schristos   IMM16U =	IMM | SRC | L_16U,
131ed0d50c3Schristos   IMM32 =	IMM | SRC | L_32,
132ed0d50c3Schristos 
133ed0d50c3Schristos   IMM3NZ_NS =   IMM3NZ | NO_SYMBOLS,
134ed0d50c3Schristos   IMM4_NS =	IMM4 | NO_SYMBOLS,
135ed0d50c3Schristos   IMM8U_NS =	IMM8U | NO_SYMBOLS,
136ed0d50c3Schristos   IMM16U_NS =   IMM16U | NO_SYMBOLS,
137ed0d50c3Schristos 
138ed0d50c3Schristos   RD8  =	DST | L_8  | REG,
139ed0d50c3Schristos   RD16 =	DST | L_16 | REG,
140ed0d50c3Schristos   RD32 =	DST | L_32 | REG,
141ed0d50c3Schristos   R3_8  =       OP3 | L_8  | REG,
142ed0d50c3Schristos   R3_16 =       OP3 | L_16 | REG,
143ed0d50c3Schristos   R3_32 =       OP3 | L_32 | REG,
144ed0d50c3Schristos   RS8  =	SRC | L_8  | REG,
145ed0d50c3Schristos   RS16 =	SRC | L_16 | REG,
146ed0d50c3Schristos   RS32 =	SRC | L_32 | REG,
147ed0d50c3Schristos 
148ed0d50c3Schristos   RSP =		SRC | L_P | REG,
149ed0d50c3Schristos   RDP =		DST | L_P | REG,
150ed0d50c3Schristos 
151ed0d50c3Schristos   PCREL8 =	PCREL | L_8,
152ed0d50c3Schristos   PCREL16 =	PCREL | L_16,
153ed0d50c3Schristos 
154ed0d50c3Schristos   OP3PCREL8 =	OP3 | PCREL | L_8,
155ed0d50c3Schristos   OP3PCREL16 =	OP3 | PCREL | L_16,
156ed0d50c3Schristos 
157ed0d50c3Schristos   INDEXB16  =	INDEXB | L_16,
158ed0d50c3Schristos   INDEXW16  =	INDEXW | L_16,
159ed0d50c3Schristos   INDEXL16  =	INDEXL | L_16,
160ed0d50c3Schristos   INDEXB16D =	INDEXB | L_16 | DST,
161ed0d50c3Schristos   INDEXW16D =	INDEXW | L_16 | DST,
162ed0d50c3Schristos   INDEXL16D =	INDEXL | L_16 | DST,
163ed0d50c3Schristos 
164ed0d50c3Schristos   INDEXB32  =	INDEXB | L_32,
165ed0d50c3Schristos   INDEXW32  =	INDEXW | L_32,
166ed0d50c3Schristos   INDEXL32  =	INDEXL | L_32,
167ed0d50c3Schristos   INDEXB32D =	INDEXB | L_32 | DST,
168ed0d50c3Schristos   INDEXW32D =	INDEXW | L_32 | DST,
169ed0d50c3Schristos   INDEXL32D =	INDEXL | L_32 | DST,
170ed0d50c3Schristos 
171ed0d50c3Schristos   DISP2SRC =	DISP | L_2  | SRC,
172ed0d50c3Schristos   DISP16SRC =	DISP | L_16 | SRC,
173ed0d50c3Schristos   DISP32SRC =	DISP | L_32 | SRC,
174ed0d50c3Schristos 
175ed0d50c3Schristos   DISP2DST =	DISP | L_2  | DST,
176ed0d50c3Schristos   DISP16DST =	DISP | L_16 | DST,
177ed0d50c3Schristos   DISP32DST =	DISP | L_32 | DST,
178ed0d50c3Schristos 
179ed0d50c3Schristos   DSTDISPREG =  DST | DISPREG,
180ed0d50c3Schristos   SRCDISPREG =  SRC | DISPREG,
181ed0d50c3Schristos 
182ed0d50c3Schristos   ABS8SRC  = 	SRC | ABS | L_8,
183ed0d50c3Schristos   ABS16SRC = 	SRC | ABS | L_16U,
184ed0d50c3Schristos   ABS24SRC = 	SRC | ABS | L_24,
185ed0d50c3Schristos   ABS32SRC = 	SRC | ABS | L_32,
186ed0d50c3Schristos 
187ed0d50c3Schristos   ABS8DST  =	DST | ABS | L_8,
188ed0d50c3Schristos   ABS16DST = 	DST | ABS | L_16U,
189ed0d50c3Schristos   ABS24DST = 	DST | ABS | L_24,
190ed0d50c3Schristos   ABS32DST = 	DST | ABS | L_32,
191ed0d50c3Schristos 
192ed0d50c3Schristos   ABS8OP3  =	OP3 | ABS | L_8,
193ed0d50c3Schristos   ABS16OP3 = 	OP3 | ABS | L_16U,
194ed0d50c3Schristos   ABS24OP3 = 	OP3 | ABS | L_24,
195ed0d50c3Schristos   ABS32OP3 = 	OP3 | ABS | L_32,
196ed0d50c3Schristos 
197ed0d50c3Schristos   RDDEC =	DST | DEC,
198ed0d50c3Schristos   RSINC =	SRC | INC,
199ed0d50c3Schristos   RDINC =	DST | INC,
200ed0d50c3Schristos 
201ed0d50c3Schristos   RSPOSTINC =	SRC | POSTINC,
202ed0d50c3Schristos   RDPOSTINC =	DST | POSTINC,
203ed0d50c3Schristos   RSPREINC =	SRC | PREINC,
204ed0d50c3Schristos   RDPREINC =	DST | PREINC,
205ed0d50c3Schristos   RSPOSTDEC =	SRC | POSTDEC,
206ed0d50c3Schristos   RDPOSTDEC =	DST | POSTDEC,
207ed0d50c3Schristos   RSPREDEC =	SRC | PREDEC,
208ed0d50c3Schristos   RDPREDEC =	DST | PREDEC,
209ed0d50c3Schristos 
210ed0d50c3Schristos   RSIND =	SRC | IND,
211ed0d50c3Schristos   RDIND =	DST | IND,
212ed0d50c3Schristos   R3_IND = 	OP3 | IND,
213ed0d50c3Schristos 
214ed0d50c3Schristos #define MS32	(SRC | L_32 | MACREG)
215ed0d50c3Schristos #define MD32	(DST | L_32 | MACREG)
216ed0d50c3Schristos 
217ed0d50c3Schristos #if 1
218ed0d50c3Schristos   OR8  =	RS8,		/* ??? OR as in One Register.  */
219ed0d50c3Schristos   OR16 =	RS16,
220ed0d50c3Schristos   OR32 =	RS32,
221ed0d50c3Schristos #else
222ed0d50c3Schristos   OR8  =	RD8,
223ed0d50c3Schristos   OR16 =	RD16,
224ed0d50c3Schristos   OR32 =	RD32
225ed0d50c3Schristos #endif
226ed0d50c3Schristos };
227ed0d50c3Schristos 
228ed0d50c3Schristos enum ctrlreg
229ed0d50c3Schristos {
230ed0d50c3Schristos   C_CCR  = 0,
231ed0d50c3Schristos   C_EXR  = 1,
232ed0d50c3Schristos   C_MACH = 2,
233ed0d50c3Schristos   C_MACL = 3,
234ed0d50c3Schristos   C_VBR  = 6,
235ed0d50c3Schristos   C_SBR  = 7
236ed0d50c3Schristos };
237ed0d50c3Schristos 
238ed0d50c3Schristos enum {MAX_CODE_NIBBLES = 33};
239ed0d50c3Schristos 
240ed0d50c3Schristos struct code
241ed0d50c3Schristos {
242ed0d50c3Schristos   op_type nib[MAX_CODE_NIBBLES];
243ed0d50c3Schristos };
244ed0d50c3Schristos 
245ed0d50c3Schristos struct arg
246ed0d50c3Schristos {
247ed0d50c3Schristos   op_type nib[3];
248ed0d50c3Schristos };
249ed0d50c3Schristos 
250ed0d50c3Schristos /* Availability of instructions on processor models.  */
251ed0d50c3Schristos enum h8_model
252ed0d50c3Schristos {
253ed0d50c3Schristos   AV_H8,
254ed0d50c3Schristos   AV_H8H,
255ed0d50c3Schristos   AV_H8S,
256ed0d50c3Schristos   AV_H8SX
257ed0d50c3Schristos };
258ed0d50c3Schristos 
259ed0d50c3Schristos struct h8_opcode
260ed0d50c3Schristos {
261ed0d50c3Schristos   int how;
262ed0d50c3Schristos   enum h8_model available;
263ed0d50c3Schristos   int time;
264ed0d50c3Schristos   const char *name;
265ed0d50c3Schristos   struct arg args;
266ed0d50c3Schristos   struct code data;
267ed0d50c3Schristos };
268ed0d50c3Schristos 
269ed0d50c3Schristos #ifdef DEFINE_TABLE
270ed0d50c3Schristos 
271ed0d50c3Schristos #define DATA2   DATA, DATA
272ed0d50c3Schristos #define DATA3   DATA, DATA, DATA
273ed0d50c3Schristos #define DATA5   DATA, DATA, DATA, DATA, DATA
274ed0d50c3Schristos #define DATA7   DATA, DATA, DATA, DATA, DATA, DATA, DATA
275ed0d50c3Schristos 
276ed0d50c3Schristos #define IMM8LIST	IMM8,   DATA
277ed0d50c3Schristos #define IMM16LIST	IMM16,  DATA3
278ed0d50c3Schristos #define IMM16ULIST	IMM16U, DATA3
279ed0d50c3Schristos #define IMM24LIST	IMM24,  DATA5
280ed0d50c3Schristos #define IMM32LIST	IMM32,  DATA7
281ed0d50c3Schristos 
282ed0d50c3Schristos #define DISP16LIST DISP | L_16, DATA3
283ed0d50c3Schristos #define DISP24LIST DISP | L_24, DATA5
284ed0d50c3Schristos #define DISP32LIST DISP | L_32, DATA7
285ed0d50c3Schristos 
286ed0d50c3Schristos #define ABS8LIST   ABS  | L_8,   DATA
287ed0d50c3Schristos #define ABS16LIST  ABS  | L_16U, DATA3
288ed0d50c3Schristos #define ABS24LIST  ABS  | L_24,  DATA5
289ed0d50c3Schristos #define ABS32LIST  ABS  | L_32,  DATA7
290ed0d50c3Schristos 
291ed0d50c3Schristos #define DSTABS8LIST  DST | ABS | L_8,   DATA
292ed0d50c3Schristos #define DSTABS16LIST DST | ABS | L_16U, DATA3
293ed0d50c3Schristos #define DSTABS24LIST DST | ABS | L_24,  DATA5
294ed0d50c3Schristos #define DSTABS32LIST DST | ABS | L_32,  DATA7
295ed0d50c3Schristos 
296ed0d50c3Schristos #define OP3ABS8LIST  OP3 | ABS | L_8,  DATA
297ed0d50c3Schristos #define OP3ABS16LIST OP3 | ABS | L_16, DATA3
298ed0d50c3Schristos #define OP3ABS24LIST OP3 | ABS | L_24, DATA5
299ed0d50c3Schristos #define OP3ABS32LIST OP3 | ABS | L_32, DATA7
300ed0d50c3Schristos 
301ed0d50c3Schristos #define DSTDISP16LIST DST | DISP | L_16, DATA3
302ed0d50c3Schristos #define DSTDISP24LIST DST | DISP | L_24, DATA5
303ed0d50c3Schristos #define DSTDISP32LIST DST | DISP | L_32, DATA7
304ed0d50c3Schristos 
305ed0d50c3Schristos #define A16LIST   L_16,  DATA3
306ed0d50c3Schristos #define A24LIST   L_24,  DATA5
307ed0d50c3Schristos #define A32LIST   L_32,  DATA7
308ed0d50c3Schristos 
309ed0d50c3Schristos /* Extended Operand Prefixes:  */
310ed0d50c3Schristos 
311ed0d50c3Schristos #define PREFIX_010	0x0, 0x1, 0x0
312ed0d50c3Schristos #define PREFIX_015	0x0, 0x1, 0x5
313ed0d50c3Schristos #define PREFIX_017	0x0, 0x1, 0x7
314ed0d50c3Schristos 
315ed0d50c3Schristos #define PREFIX_0100	0x0, 0x1, 0x0, 0x0
316ed0d50c3Schristos #define PREFIX_010_D2	0x0, 0x1, 0x0, B30 | B21 | DISP2SRC
317ed0d50c3Schristos #define PREFIX_0101	0x0, 0x1, 0x0, 0x1
318ed0d50c3Schristos #define PREFIX_0102	0x0, 0x1, 0x0, 0x2
319ed0d50c3Schristos #define PREFIX_0103	0x0, 0x1, 0x0, 0x3
320ed0d50c3Schristos #define PREFIX_0104	0x0, 0x1, 0x0, 0x4
321ed0d50c3Schristos #define PREFIX_0105	0x0, 0x1, 0x0, 0x5
322ed0d50c3Schristos #define PREFIX_0106	0x0, 0x1, 0x0, 0x6
323ed0d50c3Schristos #define PREFIX_0107	0x0, 0x1, 0x0, 0x7
324ed0d50c3Schristos #define PREFIX_0108	0x0, 0x1, 0x0, 0x8
325ed0d50c3Schristos #define PREFIX_0109	0x0, 0x1, 0x0, 0x9
326ed0d50c3Schristos #define PREFIX_010A	0x0, 0x1, 0x0, 0xa
327ed0d50c3Schristos #define PREFIX_010D	0x0, 0x1, 0x0, 0xd
328ed0d50c3Schristos #define PREFIX_010E	0x0, 0x1, 0x0, 0xe
329ed0d50c3Schristos 
330ed0d50c3Schristos #define PREFIX_0150	0x0, 0x1, 0x5, 0x0
331ed0d50c3Schristos #define PREFIX_015_D2	0x0, 0x1, 0x5, B30 | B21 | DISP2SRC
332ed0d50c3Schristos #define PREFIX_0151	0x0, 0x1, 0x5, 0x1
333ed0d50c3Schristos #define PREFIX_0152	0x0, 0x1, 0x5, 0x2
334ed0d50c3Schristos #define PREFIX_0153	0x0, 0x1, 0x5, 0x3
335ed0d50c3Schristos #define PREFIX_0154	0x0, 0x1, 0x5, 0x4
336ed0d50c3Schristos #define PREFIX_0155	0x0, 0x1, 0x5, 0x5
337ed0d50c3Schristos #define PREFIX_0156	0x0, 0x1, 0x5, 0x6
338ed0d50c3Schristos #define PREFIX_0157	0x0, 0x1, 0x5, 0x7
339ed0d50c3Schristos #define PREFIX_0158	0x0, 0x1, 0x5, 0x8
340ed0d50c3Schristos #define PREFIX_0159	0x0, 0x1, 0x5, 0x9
341ed0d50c3Schristos #define PREFIX_015A	0x0, 0x1, 0x5, 0xa
342ed0d50c3Schristos #define PREFIX_015D	0x0, 0x1, 0x5, 0xd
343ed0d50c3Schristos #define PREFIX_015E	0x0, 0x1, 0x5, 0xe
344ed0d50c3Schristos #define PREFIX_015F	0x0, 0x1, 0x5, 0xf
345ed0d50c3Schristos 
346ed0d50c3Schristos #define PREFIX_0170	0x0, 0x1, 0x7, 0x0
347ed0d50c3Schristos #define PREFIX_017_D2S	0x0, 0x1, 0x7, B30 | B21 | DISP2SRC
348ed0d50c3Schristos #define PREFIX_017_D2D	0x0, 0x1, 0x7, B30 | B21 | DISP2DST
349ed0d50c3Schristos #define PREFIX_0171	0x0, 0x1, 0x7, 0x1
350ed0d50c3Schristos #define PREFIX_0172	0x0, 0x1, 0x7, 0x2
351ed0d50c3Schristos #define PREFIX_0173	0x0, 0x1, 0x7, 0x3
352ed0d50c3Schristos #define PREFIX_0174	0x0, 0x1, 0x7, 0x4
353ed0d50c3Schristos #define PREFIX_0175	0x0, 0x1, 0x7, 0x5
354ed0d50c3Schristos #define PREFIX_0176	0x0, 0x1, 0x7, 0x6
355ed0d50c3Schristos #define PREFIX_0177	0x0, 0x1, 0x7, 0x7
356ed0d50c3Schristos #define PREFIX_0178	0x0, 0x1, 0x7, 0x8
357ed0d50c3Schristos #define PREFIX_0179	0x0, 0x1, 0x7, 0x9
358ed0d50c3Schristos #define PREFIX_017A	0x0, 0x1, 0x7, 0xa
359ed0d50c3Schristos #define PREFIX_017D	0x0, 0x1, 0x7, 0xd
360ed0d50c3Schristos #define PREFIX_017E	0x0, 0x1, 0x7, 0xe
361ed0d50c3Schristos #define PREFIX_017F	0x0, 0x1, 0x7, 0xf
362ed0d50c3Schristos 
363ed0d50c3Schristos #define PREFIX_6A15	0x6, 0xa, 0x1, 0x5
364ed0d50c3Schristos #define PREFIX_6A35	0x6, 0xa, 0x3, 0x5
365ed0d50c3Schristos #define PREFIX_6B15	0x6, 0xb, 0x1, 0x5
366ed0d50c3Schristos #define PREFIX_6B35	0x6, 0xb, 0x3, 0x5
367ed0d50c3Schristos 
368ed0d50c3Schristos #define PREFIX_78R4	0x7, 0x8, B31 | DISPREG, 0x4
369ed0d50c3Schristos #define PREFIX_78R5	0x7, 0x8, B31 | DISPREG, 0x5
370ed0d50c3Schristos #define PREFIX_78R6	0x7, 0x8, B31 | DISPREG, 0x6
371ed0d50c3Schristos #define PREFIX_78R7	0x7, 0x8, B31 | DISPREG, 0x7
372ed0d50c3Schristos 
373ed0d50c3Schristos #define PREFIX_78R4W	0x7, 0x8, B30 | DISPREG, 0x4
374ed0d50c3Schristos #define PREFIX_78R5W	0x7, 0x8, B30 | DISPREG, 0x5
375ed0d50c3Schristos #define PREFIX_78R6W	0x7, 0x8, B30 | DISPREG, 0x6
376ed0d50c3Schristos #define PREFIX_78R7W	0x7, 0x8, B30 | DISPREG, 0x7
377ed0d50c3Schristos 
378ed0d50c3Schristos #define PREFIX_78R4WD	0x7, 0x8, B30 | DSTDISPREG, 0x4
379ed0d50c3Schristos #define PREFIX_78R5WD	0x7, 0x8, B30 | DSTDISPREG, 0x5
380ed0d50c3Schristos #define PREFIX_78R6WD	0x7, 0x8, B30 | DSTDISPREG, 0x6
381ed0d50c3Schristos #define PREFIX_78R7WD	0x7, 0x8, B30 | DSTDISPREG, 0x7
382ed0d50c3Schristos 
383ed0d50c3Schristos #define PREFIX_7974	0x7, 0x9, 0x7, 0x4
384ed0d50c3Schristos #define PREFIX_7A74	0x7, 0xa, 0x7, 0x4
385ed0d50c3Schristos #define PREFIX_7A7C	0x7, 0xa, 0x7, 0xc
386ed0d50c3Schristos 
387ed0d50c3Schristos 
388ed0d50c3Schristos /* Source standard fragment:  */
389ed0d50c3Schristos #define FROM_IND	 0, RSIND
390ed0d50c3Schristos #define FROM_POSTINC	 8, RSPOSTINC
391ed0d50c3Schristos #define FROM_POSTDEC	10, RSPOSTDEC
392ed0d50c3Schristos #define FROM_PREINC	 9, RSPREINC
393ed0d50c3Schristos #define FROM_PREDEC	11, RSPREDEC
394ed0d50c3Schristos #define FROM_DISP2	B30 | B20 | DISP2SRC, DISPREG
395ed0d50c3Schristos #define FROM_DISP16	12, B30 | DISPREG
396ed0d50c3Schristos #define FROM_DISP32	12, B31 | DISPREG
397ed0d50c3Schristos #define FROM_DISP16B	13, B30 | DISPREG
398ed0d50c3Schristos #define FROM_DISP16W	14, B30 | DISPREG
399ed0d50c3Schristos #define FROM_DISP16L	15, B30 | DISPREG
400ed0d50c3Schristos #define FROM_DISP32B	13, B31 | DISPREG
401ed0d50c3Schristos #define FROM_DISP32W	14, B31 | DISPREG
402ed0d50c3Schristos #define FROM_DISP32L	15, B31 | DISPREG
403ed0d50c3Schristos #define FROM_ABS16	 4, B30 | IGNORE
404ed0d50c3Schristos #define FROM_ABS32	 4, B31 | IGNORE
405ed0d50c3Schristos 
406ed0d50c3Schristos /* Destination standard fragment:  */
407ed0d50c3Schristos #define TO_IND		 0, RDIND
408ed0d50c3Schristos #define TO_IND_MOV	 0, RDIND | B30
409ed0d50c3Schristos #define TO_POSTINC	 8, RDPOSTINC
410ed0d50c3Schristos #define TO_POSTINC_MOV	 8, RDPOSTINC | B30
411ed0d50c3Schristos #define TO_POSTDEC	10, RDPOSTDEC
412ed0d50c3Schristos #define TO_POSTDEC_MOV	10, RDPOSTDEC | B30
413ed0d50c3Schristos #define TO_PREINC	 9, RDPREINC
414ed0d50c3Schristos #define TO_PREINC_MOV	 9, RDPREINC  | B30
415ed0d50c3Schristos #define TO_PREDEC	11, RDPREDEC
416ed0d50c3Schristos #define TO_PREDEC_MOV	11, RDPREDEC  | B30
417ed0d50c3Schristos #define TO_DISP2	B30 | B20 | DISP2DST, DSTDISPREG
418ed0d50c3Schristos #define TO_DISP2_MOV	B30 | B20 | DISP2DST, DSTDISPREG | B30
419ed0d50c3Schristos #define TO_DISP16	12, B30 | DSTDISPREG
420ed0d50c3Schristos #define TO_DISP32	12, B31 | DSTDISPREG
421ed0d50c3Schristos #define TO_DISP16B	13, B30 | DSTDISPREG
422ed0d50c3Schristos #define TO_DISP16W	14, B30 | DSTDISPREG
423ed0d50c3Schristos #define TO_DISP16L	15, B30 | DSTDISPREG
424ed0d50c3Schristos #define TO_DISP32B	13, B31 | DSTDISPREG
425ed0d50c3Schristos #define TO_DISP32W	14, B31 | DSTDISPREG
426ed0d50c3Schristos #define TO_DISP32L	15, B31 | DSTDISPREG
427ed0d50c3Schristos #define TO_ABS16	 4, B30 | IGNORE
428ed0d50c3Schristos #define TO_ABS32	 4, B31 | IGNORE
429ed0d50c3Schristos 
430ed0d50c3Schristos /* Source fragment for three-word instruction:  */
431ed0d50c3Schristos #define TFROM_IND	6,  9, B30 | RSIND, 12
432ed0d50c3Schristos #define TFROM_DISP2	6,  9, B30 | DISPREG, 12
433ed0d50c3Schristos #define TFROM_ABS16	6, 11, B30 | B20 | B10 | IGNORE, 12, ABS16LIST
434ed0d50c3Schristos #define TFROM_ABS32	6, 11, B30 | B20 | B11 | IGNORE, 12, ABS32LIST
435ed0d50c3Schristos #define TFROM_POSTINC	6, 13, B30 | RSPOSTINC, 12
436ed0d50c3Schristos #define TFROM_PREINC	6, 13, B30 | RSPREINC, 12
437ed0d50c3Schristos #define TFROM_POSTDEC	6, 13, B30 | RSPOSTDEC, 12
438ed0d50c3Schristos #define TFROM_PREDEC	6, 13, B30 | RSPREDEC, 12
439ed0d50c3Schristos #define TFROM_DISP16	6, 15, B30 | DISPREG, 12, DISP16LIST
440ed0d50c3Schristos #define TFROM_DISP32	6, 11, 2, 12, DISP32LIST
441ed0d50c3Schristos #define TFROM_DISP16B	6, 15, B30 | DISPREG, 12, DISP16LIST
442ed0d50c3Schristos #define TFROM_DISP16W	6, 15, B30 | DISPREG, 12, DISP16LIST
443ed0d50c3Schristos #define TFROM_DISP16L	6, 15, B30 | DISPREG, 12, DISP16LIST
444ed0d50c3Schristos #define TFROM_DISP32B	6, 11, 2, 12, DISP32LIST
445ed0d50c3Schristos #define TFROM_DISP32W	6, 11, 2, 12, DISP32LIST
446ed0d50c3Schristos #define TFROM_DISP32L	6, 11, 2, 12, DISP32LIST
447ed0d50c3Schristos #define TFROM_ABS16W	6, 11, 1, 12, ABS16LIST
448ed0d50c3Schristos #define TFROM_ABS32W	6, 11, 3, 12, ABS32LIST
449ed0d50c3Schristos 
450ed0d50c3Schristos /* Source fragment for three-word instruction:  */
451ed0d50c3Schristos #define TFROM_IND_B	6,  8, B30 | RSIND, 12
452ed0d50c3Schristos #define TFROM_ABS16_B	6, 10, B30 | B20 | B10 | IGNORE, 12, ABS16LIST
453ed0d50c3Schristos #define TFROM_ABS32_B	6, 10, B30 | B20 | B11 | IGNORE, 12, ABS32LIST
454ed0d50c3Schristos 
455ed0d50c3Schristos #define TFROM_DISP2_B	6,  8, B30 | DISPREG, 12
456ed0d50c3Schristos #define TFROM_POSTINC_B	6, 12, B30 | RSPOSTINC, 12
457ed0d50c3Schristos #define TFROM_PREINC_B	6, 12, B30 | RSPREINC, 12
458ed0d50c3Schristos #define TFROM_POSTDEC_B	6, 12, B30 | RSPOSTDEC, 12
459ed0d50c3Schristos #define TFROM_PREDEC_B	6, 12, B30 | RSPREDEC, 12
460ed0d50c3Schristos #define TFROM_DISP16_B	6, 14, B30 | DISPREG, 12, DISP16LIST
461ed0d50c3Schristos #define TFROM_DISP32_B	6, 10, 2, 12, DISP32LIST
462ed0d50c3Schristos #define TFROM_DISP16B_B	6, 14, B30 | DISPREG, 12, DISP16LIST
463ed0d50c3Schristos #define TFROM_DISP16W_B	6, 14, B30 | DISPREG, 12, DISP16LIST
464ed0d50c3Schristos #define TFROM_DISP16L_B	6, 14, B30 | DISPREG, 12, DISP16LIST
465ed0d50c3Schristos #define TFROM_DISP32B_B	6, 10, 2, 12, DISP32LIST
466ed0d50c3Schristos #define TFROM_DISP32W_B	6, 10, 2, 12, DISP32LIST
467ed0d50c3Schristos #define TFROM_DISP32L_B	6, 10, 2, 12, DISP32LIST
468ed0d50c3Schristos 
469ed0d50c3Schristos #define TFROM_ABS16W_B	6, 10, 1, 12, ABS16LIST
470ed0d50c3Schristos #define TFROM_ABS32W_B	6, 10, 3, 12, ABS32LIST
471ed0d50c3Schristos 
472ed0d50c3Schristos /* Extended Operand Class Expanders:  */
473ed0d50c3Schristos 
474ed0d50c3Schristos #define MOVFROM_STD(CODE, PREFIX, NAME, SRC, SRC_INFIX) \
475ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND,     E}},  {{PREFIX, SRC_INFIX, TO_IND_MOV,     E}}}, \
476ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}},  {{PREFIX, SRC_INFIX, TO_POSTINC_MOV, E}}}, \
477ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}},  {{PREFIX, SRC_INFIX, TO_POSTDEC_MOV, E}}}, \
478ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}},  {{PREFIX, SRC_INFIX, TO_PREINC_MOV,  E}}}, \
479ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}},  {{PREFIX, SRC_INFIX, TO_PREDEC_MOV,  E}}}, \
480ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}},  {{PREFIX, SRC_INFIX, TO_DISP2_MOV,   E}}}, \
481ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}},  {{PREFIX, SRC_INFIX, TO_DISP16,  DSTDISP16LIST, E}}}, \
482ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}},  {{PREFIX, SRC_INFIX, TO_DISP32,  DSTDISP32LIST, E}}}, \
483ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16B, DSTDISP16LIST, E}}}, \
484ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16W, DSTDISP16LIST, E}}}, \
485ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16L, DSTDISP16LIST, E}}}, \
486ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32B, DSTDISP32LIST, E}}}, \
487ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32W, DSTDISP32LIST, E}}}, \
488ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32L, DSTDISP32LIST, E}}}, \
489ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS16DST,  E}},  {{PREFIX, SRC_INFIX, TO_ABS16,   DSTABS16LIST,  E}}}, \
490ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS32DST,  E}},  {{PREFIX, SRC_INFIX, TO_ABS32,   DSTABS32LIST,  E}}}
491ed0d50c3Schristos 
492ed0d50c3Schristos #define MOVFROM_AD(CODE, PREFIX, NAME, SRC, SRC_INFIX, SRC_SUFFIX) \
493ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND,     E}},  {{PREFIX, SRC_INFIX, TO_IND_MOV,     SRC_SUFFIX, E}}}, \
494ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}},  {{PREFIX, SRC_INFIX, TO_POSTINC_MOV, SRC_SUFFIX, E}}}, \
495ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}},  {{PREFIX, SRC_INFIX, TO_POSTDEC_MOV, SRC_SUFFIX, E}}}, \
496ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}},  {{PREFIX, SRC_INFIX, TO_PREINC_MOV,  SRC_SUFFIX, E}}}, \
497ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}},  {{PREFIX, SRC_INFIX, TO_PREDEC_MOV,  SRC_SUFFIX, E}}}, \
498ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}},  {{PREFIX, SRC_INFIX, TO_DISP2_MOV,   SRC_SUFFIX, E}}}, \
499ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}},  {{PREFIX, SRC_INFIX, TO_DISP16,  SRC_SUFFIX, DSTDISP16LIST, E}}}, \
500ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}},  {{PREFIX, SRC_INFIX, TO_DISP32,  SRC_SUFFIX, DSTDISP32LIST, E}}}, \
501ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16B, SRC_SUFFIX, DSTDISP16LIST, E}}}, \
502ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16W, SRC_SUFFIX, DSTDISP16LIST, E}}}, \
503ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}},  {{PREFIX, SRC_INFIX, TO_DISP16L, SRC_SUFFIX, DSTDISP16LIST, E}}}, \
504ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32B, SRC_SUFFIX, DSTDISP32LIST, E}}}, \
505ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32W, SRC_SUFFIX, DSTDISP32LIST, E}}}, \
506ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}},  {{PREFIX, SRC_INFIX, TO_DISP32L, SRC_SUFFIX, DSTDISP32LIST, E}}}, \
507ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS16DST,  E}},  {{PREFIX, SRC_INFIX, TO_ABS16,   SRC_SUFFIX, DSTABS16LIST,  E}}}, \
508ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS32DST,  E}},  {{PREFIX, SRC_INFIX, TO_ABS32,   SRC_SUFFIX, DSTABS32LIST,  E}}}
509ed0d50c3Schristos 
510ed0d50c3Schristos #define MOVFROM_IMM8(CODE, PREFIX, NAME, SRC) \
511ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND,     E}},  {{PREFIX,  0, RDIND,     IMM8LIST, E}}}, \
512ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}},  {{PREFIX,  8, RDPOSTINC, IMM8LIST, E}}}, \
513ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}},  {{PREFIX, 10, RDPOSTDEC, IMM8LIST, E}}}, \
514ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}},  {{PREFIX,  9, RDPREINC,  IMM8LIST, E}}}, \
515ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}},  {{PREFIX, 11, RDPREDEC,  IMM8LIST, E}}}, \
516ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}},  {{PREFIX, B30 | B20 | DISP2DST, DSTDISPREG, IMM8LIST, E}}}, \
517ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}},  {{PREFIX, 12, B30 | DSTDISPREG, IMM8LIST, DSTDISP16LIST, E}}}, \
518ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}},  {{PREFIX, 12, B31 | DSTDISPREG, IMM8LIST, DSTDISP32LIST, E}}}, \
519ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}},  {{PREFIX, 13, B30 | DSTDISPREG, IMM8LIST, DSTDISP16LIST, E}}}, \
520ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}},  {{PREFIX, 14, B30 | DSTDISPREG, IMM8LIST, DSTDISP16LIST, E}}}, \
521ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}},  {{PREFIX, 15, B30 | DSTDISPREG, IMM8LIST, DSTDISP16LIST, E}}}, \
522ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}},  {{PREFIX, 13, B31 | DSTDISPREG, IMM8LIST, DSTDISP32LIST, E}}}, \
523ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}},  {{PREFIX, 14, B31 | DSTDISPREG, IMM8LIST, DSTDISP32LIST, E}}}, \
524ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}},  {{PREFIX, 15, B31 | DSTDISPREG, IMM8LIST, DSTDISP32LIST, E}}}, \
525ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS16DST,  E}},  {{PREFIX,  4, B30 | IGNORE,     IMM8LIST, DSTABS16LIST,  E}}}, \
526ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS32DST,  E}},  {{PREFIX,  4, B31 | IGNORE,     IMM8LIST, DSTABS32LIST,  E}}}
527ed0d50c3Schristos 
528ed0d50c3Schristos #define MOVFROM_IMM(CODE, PREFIX, NAME, SRC, LIST) \
529ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND,     E}},  {{PREFIX, LIST,  0, RDIND,     DATA2, E}}}, \
530ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}},  {{PREFIX, LIST,  8, RDPOSTINC, DATA2, E}}}, \
531ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}},  {{PREFIX, LIST, 10, RDPOSTDEC, DATA2, E}}}, \
532ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}},  {{PREFIX, LIST,  9, RDPREINC,  DATA2, E}}}, \
533ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}},  {{PREFIX, LIST, 11, RDPREDEC,  DATA2, E}}}, \
534ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}},  {{PREFIX, LIST, B30 | B20 | DISP2DST, DSTDISPREG, DATA2, E}}}, \
535ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}},  {{PREFIX, LIST, 12, B30 | DSTDISPREG, DATA2, DSTDISP16LIST, E}}}, \
536ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}},  {{PREFIX, LIST, 12, B31 | DSTDISPREG, DATA2, DSTDISP32LIST, E}}}, \
537ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}},  {{PREFIX, LIST, 13, B30 | DSTDISPREG, DATA2, DSTDISP16LIST, E}}}, \
538ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}},  {{PREFIX, LIST, 14, B30 | DSTDISPREG, DATA2, DSTDISP16LIST, E}}}, \
539ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}},  {{PREFIX, LIST, 15, B30 | DSTDISPREG, DATA2, DSTDISP16LIST, E}}}, \
540ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}},  {{PREFIX, LIST, 13, B31 | DSTDISPREG, DATA2, DSTDISP32LIST, E}}}, \
541ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}},  {{PREFIX, LIST, 14, B31 | DSTDISPREG, DATA2, DSTDISP32LIST, E}}}, \
542ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}},  {{PREFIX, LIST, 15, B31 | DSTDISPREG, DATA2, DSTDISP32LIST, E}}}, \
543ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS16DST,  E}},  {{PREFIX, LIST,  4, B30 | IGNORE,     DATA2, DSTABS16LIST,  E}}}, \
544ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS32DST,  E}},  {{PREFIX, LIST,  4, B31 | IGNORE,     DATA2, DSTABS32LIST,  E}}}
545ed0d50c3Schristos 
546ed0d50c3Schristos #define MOVFROM_REG_BW(CODE, NAME, SRC, PREFIX, OP1, OP2, OP3, OP4, RELAX16) \
547ed0d50c3Schristos   {CODE, AV_H8,   4, NAME, {{SRC, RDIND,     E}}, {{                              6, OP1, B31 | RDIND,      SRC,                E}}}, \
548ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, 3,                    6, OP3, B31 | RDPOSTINC,  SRC,                E}}}, \
549ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, 1,                    6, OP3, B31 | RDPOSTDEC,  SRC,                E}}}, \
550ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, 2,                    6, OP3, B31 | RDPREINC,   SRC,                E}}}, \
551ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{SRC, RDPREDEC,  E}}, {{                              6, OP3, B31 | RDPREDEC,   SRC,                E}}}, \
552ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, B30 | B20 | DISP2DST, 6, OP1, B31 | DSTDISPREG, SRC,                E}}}, \
553ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{SRC, DISP16DST, E}}, {{                              6, OP4, B31 | DSTDISPREG, SRC, DSTDISP16LIST, E}}}, \
554ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{SRC, DISP32DST, E}}, {{7, 8, B30 | DSTDISPREG, 0,    6, OP2, 10,               SRC, MEMRELAX | DSTDISP32LIST, E}}}, \
555ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, 1,                    6, OP4, B31 | DSTDISPREG, SRC, DSTDISP16LIST, E}}}, \
556ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, 2,                    6, OP4, B31 | DSTDISPREG, SRC, DSTDISP16LIST, E}}}, \
557ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, 3,                    6, OP4, B31 | DSTDISPREG, SRC, DSTDISP16LIST, E}}}, \
558ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{7, 8, B30 | DSTDISPREG, 1,    6, OP2, 10,               SRC, DSTDISP32LIST, E}}}, \
559ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{7, 8, B30 | DSTDISPREG, 2,    6, OP2, 10,               SRC, DSTDISP32LIST, E}}}, \
560ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{7, 8, B30 | DSTDISPREG, 3,    6, OP2, 10,               SRC, DSTDISP32LIST, E}}}, \
561ed0d50c3Schristos   {CODE, AV_H8,   4, NAME, {{SRC, ABS16DST,  E}}, {{                              6, OP2, 8,                SRC, RELAX16  | DSTABS16LIST, E}}}, \
562ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{SRC, ABS32DST,  E}}, {{                              6, OP2, 10,               SRC, MEMRELAX | DSTABS32LIST, E}}}
563ed0d50c3Schristos 
564ed0d50c3Schristos #define MOVTO_REG_BW(CODE, NAME, DST, PREFIX, OP1, OP2, OP3, OP4, RELAX16) \
565ed0d50c3Schristos   {CODE, AV_H8,   4, NAME, {{RSIND,     DST, E}}, {{                              6, OP1, B30 | RSIND,     DST,             E}}}, \
566ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{RSPOSTINC, DST, E}}, {{                              6, OP3, B30 | RSPOSTINC, DST,             E}}}, \
567ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTDEC, DST, E}}, {{PREFIX, 2,                    6, OP3, B30 | RSPOSTDEC, DST,             E}}}, \
568ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREINC,  DST, E}}, {{PREFIX, 1,                    6, OP3, B30 | RSPREINC,  DST,             E}}}, \
569ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREDEC,  DST, E}}, {{PREFIX, 3,                    6, OP3, B30 | RSPREDEC,  DST,             E}}}, \
570ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP2SRC,  DST, E}}, {{PREFIX, B30 | B20 | DISP2SRC, 6, OP1, B30 | DISPREG,   DST,             E}}}, \
571ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{DISP16SRC, DST, E}}, {{                              6, OP4, B30 | DISPREG,   DST, DISP16LIST, E}}}, \
572ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{DISP32SRC, DST, E}}, {{7, 8, B30 | DISPREG, 0,       6, OP2, 2,               DST, MEMRELAX | DISP32LIST, E}}}, \
573ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB16,  DST, E}}, {{PREFIX, 1,                    6, OP4, B30 | DISPREG,   DST, DISP16LIST, E}}}, \
574ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW16,  DST, E}}, {{PREFIX, 2,                    6, OP4, B30 | DISPREG,   DST, DISP16LIST, E}}}, \
575ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL16,  DST, E}}, {{PREFIX, 3,                    6, OP4, B30 | DISPREG,   DST, DISP16LIST, E}}}, \
576ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB32,  DST, E}}, {{7, 8, B30 | DISPREG, 1,       6, OP2, 2,               DST, DISP32LIST, E}}}, \
577ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW32,  DST, E}}, {{7, 8, B30 | DISPREG, 2,       6, OP2, 2,               DST, DISP32LIST, E}}}, \
578ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL32,  DST, E}}, {{7, 8, B30 | DISPREG, 3,       6, OP2, 2,               DST, DISP32LIST, E}}}, \
579ed0d50c3Schristos   {CODE, AV_H8,   4, NAME, {{ABS16SRC,  DST, E}}, {{                              6, OP2, 0,               DST, RELAX16  | ABS16LIST, E}}}, \
580ed0d50c3Schristos   {CODE, AV_H8,   6, NAME, {{ABS32SRC,  DST, E}}, {{                              6, OP2, 2,               DST, MEMRELAX | ABS32LIST, E}}}
581ed0d50c3Schristos 
582ed0d50c3Schristos /* Expansion macros for two-word (plus data) instructions.  */
583ed0d50c3Schristos 
584ed0d50c3Schristos /* Expansion from one source to "standard" destinations.  */
585ed0d50c3Schristos #define EXPAND2_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, NIB1, NIB2) \
586ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, TO_POSTINC, NIB1, NIB2, E}}}, \
587ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, TO_POSTDEC, NIB1, NIB2, E}}}, \
588ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, TO_PREINC,  NIB1, NIB2, E}}}, \
589ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}}, {{PREFIX, TO_PREDEC,  NIB1, NIB2, E}}}, \
590ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, TO_DISP2,   NIB1, NIB2, E}}}, \
591ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}}, {{PREFIX, TO_DISP16,  NIB1, NIB2, DSTDISP16LIST, E}}}, \
592ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}}, {{PREFIX, TO_DISP32,  NIB1, NIB2, DSTDISP32LIST, E}}}, \
593ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, TO_DISP16B, NIB1, NIB2, DSTDISP16LIST, E}}}, \
594ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, TO_DISP16W, NIB1, NIB2, DSTDISP16LIST, E}}}, \
595ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, TO_DISP16L, NIB1, NIB2, DSTDISP16LIST, E}}}, \
596ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{PREFIX, TO_DISP32B, NIB1, NIB2, DSTDISP32LIST, E}}}, \
597ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{PREFIX, TO_DISP32W, NIB1, NIB2, DSTDISP32LIST, E}}}, \
598ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{PREFIX, TO_DISP32L, NIB1, NIB2, DSTDISP32LIST, E}}}
599ed0d50c3Schristos 
600ed0d50c3Schristos /* Expansion from one destination to "standard" sources.  */
601ed0d50c3Schristos #define EXPAND2_STD_DST(CODE, WEIGHT, NAME, DST, PREFIX, NIB1, NIB2) \
602ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTINC, DST, E}}, {{PREFIX, FROM_POSTINC, NIB1, NIB2, E}}}, \
603ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTDEC, DST, E}}, {{PREFIX, FROM_POSTDEC, NIB1, NIB2, E}}}, \
604ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREINC,  DST, E}}, {{PREFIX, FROM_PREINC,  NIB1, NIB2, E}}}, \
605ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREDEC,  DST, E}}, {{PREFIX, FROM_PREDEC,  NIB1, NIB2, E}}}, \
606ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP2SRC,  DST, E}}, {{PREFIX, FROM_DISP2,   NIB1, NIB2, E}}}, \
607ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP16SRC, DST, E}}, {{PREFIX, FROM_DISP16,  NIB1, NIB2, DISP16LIST, E}}}, \
608ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP32SRC, DST, E}}, {{PREFIX, FROM_DISP32,  NIB1, NIB2, DISP32LIST, E}}}, \
609ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB16,  DST, E}}, {{PREFIX, FROM_DISP16B, NIB1, NIB2, DISP16LIST, E}}}, \
610ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW16,  DST, E}}, {{PREFIX, FROM_DISP16W, NIB1, NIB2, DISP16LIST, E}}}, \
611ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL16,  DST, E}}, {{PREFIX, FROM_DISP16L, NIB1, NIB2, DISP16LIST, E}}}, \
612ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB32,  DST, E}}, {{PREFIX, FROM_DISP32B, NIB1, NIB2, DISP32LIST, E}}}, \
613ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW32,  DST, E}}, {{PREFIX, FROM_DISP32W, NIB1, NIB2, DISP32LIST, E}}}, \
614ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL32,  DST, E}}, {{PREFIX, FROM_DISP32L, NIB1, NIB2, DISP32LIST, E}}}
615ed0d50c3Schristos 
616ed0d50c3Schristos /* Expansion from immediate source to "standard" destinations.  */
617ed0d50c3Schristos #define EXPAND2_STD_IMM(CODE, WEIGHT, NAME, SRC, PREFIX, OPCODE, IGN, IMMLIST) \
618ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, TO_POSTINC, OPCODE, IGN, IMMLIST, E}}}, \
619ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, TO_POSTDEC, OPCODE, IGN, IMMLIST, E}}}, \
620ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, TO_PREINC,  OPCODE, IGN, IMMLIST, E}}}, \
621ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}}, {{PREFIX, TO_PREDEC,  OPCODE, IGN, IMMLIST, E}}}, \
622ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, TO_DISP2,   OPCODE, IGN, IMMLIST, E}}}, \
623ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}}, {{PREFIX, TO_DISP16,  OPCODE, IGN, DSTDISP16LIST, IMMLIST, E}}}, \
624ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}}, {{PREFIX, TO_DISP32,  OPCODE, IGN, DSTDISP32LIST, IMMLIST, E}}}, \
625ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, TO_DISP16B, OPCODE, IGN, DSTDISP16LIST, IMMLIST, E}}}, \
626ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, TO_DISP16W, OPCODE, IGN, DSTDISP16LIST, IMMLIST, E}}}, \
627ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, TO_DISP16L, OPCODE, IGN, DSTDISP16LIST, IMMLIST, E}}}, \
628ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{PREFIX, TO_DISP32B, OPCODE, IGN, DSTDISP32LIST, IMMLIST, E}}}, \
629ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{PREFIX, TO_DISP32W, OPCODE, IGN, DSTDISP32LIST, IMMLIST, E}}}, \
630ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{PREFIX, TO_DISP32L, OPCODE, IGN, DSTDISP32LIST, IMMLIST, E}}}
631ed0d50c3Schristos 
632ed0d50c3Schristos /* Expansion from abs/disp source to "standard" destinations.  */
633ed0d50c3Schristos #define EXPAND2_STD_ABSDISP(CODE, WEIGHT, NAME, SRC, PREFIX, DSTLIST, NIB1, NIB2) \
634ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, DSTLIST, TO_POSTINC, NIB1, NIB2, E}}}, \
635ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, DSTLIST, TO_POSTDEC, NIB1, NIB2, E}}}, \
636ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, DSTLIST, TO_PREINC,  NIB1, NIB2, E}}}, \
637ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}}, {{PREFIX, DSTLIST, TO_PREDEC,  NIB1, NIB2, E}}}, \
638ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, DSTLIST, TO_DISP2,   NIB1, NIB2, E}}}, \
639ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}}, {{PREFIX, DSTLIST, TO_DISP16,  NIB1, NIB2, DSTDISP16LIST, E}}}, \
640ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}}, {{PREFIX, DSTLIST, TO_DISP32,  NIB1, NIB2, DSTDISP32LIST, E}}}, \
641ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, DSTLIST, TO_DISP16B, NIB1, NIB2, DSTDISP16LIST, E}}}, \
642ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, DSTLIST, TO_DISP16W, NIB1, NIB2, DSTDISP16LIST, E}}}, \
643ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, DSTLIST, TO_DISP16L, NIB1, NIB2, DSTDISP16LIST, E}}}, \
644ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{PREFIX, DSTLIST, TO_DISP32B, NIB1, NIB2, DSTDISP32LIST, E}}}, \
645ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{PREFIX, DSTLIST, TO_DISP32W, NIB1, NIB2, DSTDISP32LIST, E}}}, \
646ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{PREFIX, DSTLIST, TO_DISP32L, NIB1, NIB2, DSTDISP32LIST, E}}}
647ed0d50c3Schristos 
648ed0d50c3Schristos /* Expansion from ind source to "standard" destinations.  */
649ed0d50c3Schristos #define EXPAND2_STD_IND(CODE, WEIGHT, NAME, OPCODE, BIT) \
650ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDPOSTINC, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_POSTINC, OPCODE, IGNORE, E}}}, \
651ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDPOSTDEC, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_POSTDEC, OPCODE, IGNORE, E}}}, \
652ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDPREINC,  E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_PREINC,  OPCODE, IGNORE, E}}}, \
653ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDPREDEC,  E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_PREDEC,  OPCODE, IGNORE, E}}}, \
654ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, DISP2DST,  E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP2,   OPCODE, IGNORE, E}}}, \
655ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, DISP16DST, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP16,  OPCODE, IGNORE, DSTDISP16LIST, E}}}, \
656ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, DISP32DST, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32,  OPCODE, IGNORE, DSTDISP32LIST, E}}}, \
657ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXB16D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP16B, OPCODE, IGNORE, DSTDISP16LIST, E}}}, \
658ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXW16D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP16W, OPCODE, IGNORE, DSTDISP16LIST, E}}}, \
659ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXL16D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP16L, OPCODE, IGNORE, DSTDISP16LIST, E}}}, \
660ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXB32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32B, OPCODE, IGNORE, DSTDISP32LIST, E}}}, \
661ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXW32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32W, OPCODE, IGNORE, DSTDISP32LIST, E}}}, \
662ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXL32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32L, OPCODE, IGNORE, DSTDISP32LIST, E}}}
663ed0d50c3Schristos 
664ed0d50c3Schristos /* Expansion macros for three word (plus data) instructions.  */
665ed0d50c3Schristos 
666ed0d50c3Schristos #define EXPAND3_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, INFIX, OPCODE)  \
667ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, INFIX,  8, RDPOSTINC, OPCODE, B30 | IGNORE, E}}}, \
668ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, INFIX, 10, RDPOSTDEC, OPCODE, B30 | IGNORE, E}}}, \
669ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, INFIX,  9, RDPREINC,  OPCODE, B30 | IGNORE, E}}}, \
670ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}}, {{PREFIX, INFIX, 11, RDPREDEC,  OPCODE, B30 | IGNORE, E}}}, \
671ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, INFIX, B30 | B20 | DISP2DST, DSTDISPREG, OPCODE, B30 | IGNORE, E}}}, \
672ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}}, {{PREFIX, INFIX, 12, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
673ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}}, {{PREFIX, INFIX, 12, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
674ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, INFIX, 13, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
675ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, INFIX, 14, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
676ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, INFIX, 15, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
677ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{PREFIX, INFIX, 13, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
678ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{PREFIX, INFIX, 14, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
679ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{PREFIX, INFIX, 15, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}
680ed0d50c3Schristos 
681ed0d50c3Schristos #define EXPAND3_L_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, INFIX, OPCODE)  \
682ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDIND,     E}}, {{PREFIX, INFIX,  0, RDIND,     OPCODE, B30 | IGNORE, E}}}, \
683ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, INFIX,  8, RDPOSTINC, OPCODE, B30 | IGNORE, E}}}, \
684ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTDEC, E}}, {{PREFIX, INFIX, 10, RDPOSTDEC, OPCODE, B30 | IGNORE, E}}}, \
685ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREINC,  E}}, {{PREFIX, INFIX,  9, RDPREINC,  OPCODE, B30 | IGNORE, E}}}, \
686ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, RDPREDEC,  E}}, {{PREFIX, INFIX, 11, RDPREDEC,  OPCODE, B30 | IGNORE, E}}}, \
687ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP2DST,  E}}, {{PREFIX, INFIX, B30 | B20 | DISP2DST, DSTDISPREG, OPCODE, B30 | IGNORE, E}}}, \
688ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP16DST, E}}, {{PREFIX, INFIX, 12, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
689ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, DISP32DST, E}}, {{PREFIX, INFIX, 12, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
690ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB16D, E}}, {{PREFIX, INFIX, 13, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
691ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW16D, E}}, {{PREFIX, INFIX, 14, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
692ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL16D, E}}, {{PREFIX, INFIX, 15, B30 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP16LIST, E}}}, \
693ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXB32D, E}}, {{PREFIX, INFIX, 13, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
694ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXW32D, E}}, {{PREFIX, INFIX, 14, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
695ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, INDEXL32D, E}}, {{PREFIX, INFIX, 15, B31 | DSTDISPREG, OPCODE, B30 | IGNORE, DSTDISP32LIST, E}}}, \
696ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS16DST,  E}}, {{PREFIX, INFIX,  4, B30 | IGNORE,     OPCODE, B30 | IGNORE, DSTABS16LIST,  E}}}, \
697ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{SRC, ABS32DST,  E}}, {{PREFIX, INFIX,  4, B31 | IGNORE,     OPCODE, B30 | IGNORE, DSTABS32LIST,  E}}}
698ed0d50c3Schristos 
699ed0d50c3Schristos 
700ed0d50c3Schristos #define EXPAND_STD_MATRIX_L(CODE, NAME, OPCODE) \
701ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, RSIND,     PREFIX_0104,   TFROM_IND,     OPCODE), \
702ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, RSPOSTINC, PREFIX_0104,   TFROM_POSTINC, OPCODE), \
703ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, RSPOSTDEC, PREFIX_0106,   TFROM_POSTDEC, OPCODE), \
704ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, RSPREINC,  PREFIX_0105,   TFROM_PREINC,  OPCODE), \
705ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, RSPREDEC,  PREFIX_0107,   TFROM_PREDEC,  OPCODE), \
706ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, DISP2SRC,  PREFIX_010_D2, TFROM_DISP2,   OPCODE), \
707ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, DISP16SRC, PREFIX_0104,   TFROM_DISP16,  OPCODE), \
708ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, DISP32SRC, PREFIX_78R4,   TFROM_DISP32,  OPCODE), \
709ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXB16,  PREFIX_0105,   TFROM_DISP16B, OPCODE), \
710ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXW16,  PREFIX_0106,   TFROM_DISP16W, OPCODE), \
711ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXL16,  PREFIX_0107,   TFROM_DISP16L, OPCODE), \
712ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXB32,  PREFIX_78R5,   TFROM_DISP32B, OPCODE), \
713ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXW32,  PREFIX_78R6,   TFROM_DISP32W, OPCODE), \
714ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, INDEXL32,  PREFIX_78R7,   TFROM_DISP32L, OPCODE), \
715ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, ABS16SRC,  PREFIX_0104,   TFROM_ABS16,   OPCODE), \
716ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 6, NAME, ABS32SRC,  PREFIX_0104,   TFROM_ABS32,   OPCODE)
717ed0d50c3Schristos 
718ed0d50c3Schristos 
719ed0d50c3Schristos #define EXPAND_STD_MATRIX_W(CODE, NAME, OPCODE) \
720ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPOSTINC, PREFIX_0154,   TFROM_POSTINC, OPCODE), \
721ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPOSTDEC, PREFIX_0156,   TFROM_POSTDEC, OPCODE), \
722ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPREINC,  PREFIX_0155,   TFROM_PREINC,  OPCODE), \
723ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPREDEC,  PREFIX_0157,   TFROM_PREDEC,  OPCODE), \
724ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP2SRC,  PREFIX_015_D2, TFROM_DISP2,   OPCODE), \
725ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP16SRC, PREFIX_0154,   TFROM_DISP16,  OPCODE), \
726ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP32SRC, PREFIX_78R4W,  TFROM_DISP32,  OPCODE), \
727ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXB16,  PREFIX_0155,   TFROM_DISP16B, OPCODE), \
728ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXW16,  PREFIX_0156,   TFROM_DISP16W, OPCODE), \
729ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXL16,  PREFIX_0157,   TFROM_DISP16L, OPCODE), \
730ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXB32,  PREFIX_78R5W,  TFROM_DISP32B, OPCODE), \
731ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXW32,  PREFIX_78R6W,  TFROM_DISP32W, OPCODE), \
732ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXL32,  PREFIX_78R7W,  TFROM_DISP32L, OPCODE)
733ed0d50c3Schristos 
734ed0d50c3Schristos #define EXPAND_STD_MATRIX_B(CODE, NAME, OPCODE) \
735ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPOSTINC, PREFIX_0174,    TFROM_POSTINC_B, OPCODE), \
736ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPOSTDEC, PREFIX_0176,    TFROM_POSTDEC_B, OPCODE), \
737ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPREINC,  PREFIX_0175,    TFROM_PREINC_B,  OPCODE), \
738ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, RSPREDEC,  PREFIX_0177,    TFROM_PREDEC_B,  OPCODE), \
739ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP2SRC,  PREFIX_017_D2S, TFROM_DISP2_B,   OPCODE), \
740ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP16SRC, PREFIX_0174,    TFROM_DISP16_B,  OPCODE), \
741ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, DISP32SRC, PREFIX_78R4W,   TFROM_DISP32_B,  OPCODE), \
742ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXB16,  PREFIX_0175,    TFROM_DISP16B_B, OPCODE), \
743ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXW16,  PREFIX_0176,    TFROM_DISP16W_B, OPCODE), \
744ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXL16,  PREFIX_0177,    TFROM_DISP16L_B, OPCODE), \
745ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXB32,  PREFIX_78R5W,   TFROM_DISP32B_B, OPCODE), \
746ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXW32,  PREFIX_78R6W,   TFROM_DISP32W_B, OPCODE), \
747ed0d50c3Schristos   EXPAND3_L_SRC (CODE, 4, NAME, INDEXL32,  PREFIX_78R7W,   TFROM_DISP32L_B, OPCODE)
748ed0d50c3Schristos 
749ed0d50c3Schristos 
750ed0d50c3Schristos /* Use the expansion macros to fill out the opcode table.  */
751ed0d50c3Schristos 
752ed0d50c3Schristos #define EXPAND_FROM_REG8(CODE, NAME, OP1, OP2, OP3) \
753ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS8, RDIND,     E}}, {{0x7, 0xd, B30 | RDIND, IGNORE,             OP1, OP2, RS8, IGNORE, E}}}, \
754ed0d50c3Schristos   EXPAND2_STD_SRC (CODE, 2, NAME, RS8, PREFIX_0179, OP3, RS8), \
755ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS8, ABS8DST,   E}}, {{0x7, 0xf, DSTABS8LIST,                     OP1, OP2, RS8, IGNORE, E}}}, \
756ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS8, ABS16DST,  E}}, {{0x6, 0xa, 0x1, B31 | IGNORE, DSTABS16LIST, OP1, OP2, RS8, IGNORE, E}}}, \
757ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS8, ABS32DST,  E}}, {{0x6, 0xa, 0x3, B31 | IGNORE, DSTABS32LIST, OP1, OP2, RS8, IGNORE, E}}}
758ed0d50c3Schristos 
759ed0d50c3Schristos #define EXPAND_TO_REG8(CODE, NAME, OP1, OP2, OP3) \
760ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RD8,     E}}, {{0x7, 0xc, B30 | RSIND, IGNORE,          OP1, OP2, IGNORE, RD8, E}}}, \
761ed0d50c3Schristos   EXPAND2_STD_DST (CODE, 2, NAME, RD8, PREFIX_017A, OP3, RD8), \
762ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS8SRC,  RD8,  E}}, {{0x7, 0xe, ABS8LIST,                     OP1, OP2, IGNORE, RD8, E}}}, \
763ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, RD8,  E}}, {{0x6, 0xa, 0x1, B30 | IGNORE, ABS16LIST, OP1, OP2, IGNORE, RD8, E}}}, \
764ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, RD8,  E}}, {{0x6, 0xa, 0x3, B30 | IGNORE, ABS32LIST, OP1, OP2, IGNORE, RD8, E}}}
765ed0d50c3Schristos 
766ed0d50c3Schristos #define EXPAND_FROM_IND8(CODE, NAME, OPCODE) \
767ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDIND,    E}}, {{0x7, 0xc, B30 | RSIND, 0x5, TO_IND,   OPCODE, IGNORE, E}}}, \
768ed0d50c3Schristos   EXPAND2_STD_IND (CODE, 2, NAME, OPCODE, B30), \
769ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, ABS16DST, E}}, {{0x7, 0xc, B30 | RSIND, 0x5, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
770ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, ABS32DST, E}}, {{0x7, 0xc, B30 | RSIND, 0x5, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
771ed0d50c3Schristos 
772ed0d50c3Schristos #define EXPAND_FROM_ABS16_B(CODE, NAME, OPCODE) \
773ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, RDIND,    E}}, {{PREFIX_6A15, ABS16LIST, TO_IND,   OPCODE, IGNORE, E}}}, \
774ed0d50c3Schristos   EXPAND2_STD_ABSDISP (CODE, 2, NAME, ABS16SRC, PREFIX_6A15, ABS16LIST, OPCODE, IGNORE), \
775ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, ABS16DST, E}}, {{PREFIX_6A15, ABS16LIST, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
776ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, ABS32DST, E}}, {{PREFIX_6A15, ABS16LIST, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
777ed0d50c3Schristos 
778ed0d50c3Schristos #define EXPAND_FROM_ABS32_B(CODE, NAME, OPCODE) \
779ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, RDIND,    E}}, {{PREFIX_6A35, ABS32LIST, TO_IND,   OPCODE, IGNORE, E}}}, \
780ed0d50c3Schristos   EXPAND2_STD_ABSDISP (CODE, 2, NAME, ABS32SRC, PREFIX_6A35, ABS32LIST, OPCODE, IGNORE), \
781ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, ABS16DST, E}}, {{PREFIX_6A35, ABS32LIST, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
782ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, ABS32DST, E}}, {{PREFIX_6A35, ABS32LIST, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
783ed0d50c3Schristos 
784ed0d50c3Schristos #define EXPAND_FROM_IMM16_W(CODE, NAME, OPCODE) \
785ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16, RDIND,    E}}, {{PREFIX_015E, TO_IND, OPCODE, IGNORE, IMM16LIST, E}}}, \
786ed0d50c3Schristos   EXPAND2_STD_IMM (CODE, 2, NAME, IMM16, PREFIX_015E, OPCODE, IGNORE, IMM16LIST), \
787ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16, ABS16DST, E}}, {{PREFIX_015E, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, IMM16LIST, E}}}, \
788ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16, ABS32DST, E}}, {{PREFIX_015E, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, IMM16LIST, E}}}
789ed0d50c3Schristos 
790ed0d50c3Schristos #define EXPAND_FROM_REG16(CODE, NAME, OP1, OP2, OP3) \
791ed0d50c3Schristos   {CODE, AV_H8,   2, NAME, {{RS16, RDIND,    E}}, {{0x7, 0xd, B31 | RDIND, IGNORE,             OP1, OP2, RS16, IGNORE, E}}}, \
792ed0d50c3Schristos   EXPAND2_STD_SRC (CODE, 2, NAME, RS16, PREFIX_0159, OP3, RS16), \
793ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS16, ABS16DST, E}}, {{0x6, 0xb, 0x1, B31 | IGNORE, DSTABS16LIST, OP1, OP2, RS16, IGNORE, E}}}, \
794ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS16, ABS32DST, E}}, {{0x6, 0xb, 0x3, B31 | IGNORE, DSTABS32LIST, OP1, OP2, RS16, IGNORE, E}}}
795ed0d50c3Schristos 
796ed0d50c3Schristos #define EXPAND_TO_REG16(CODE, NAME, OP1, OP2, OP3) \
797ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RD16,    E}}, {{0x7, 0xc, B31 | RSIND, IGNORE,          OP1, OP2, IGNORE, RD16, E}}}, \
798ed0d50c3Schristos   EXPAND2_STD_DST (CODE, 2, NAME, RD16, PREFIX_015A, OP3, RD16), \
799ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, RD16, E}}, {{0x6, 0xb, 0x1, B30 | IGNORE, ABS16LIST, OP1, OP2, IGNORE, RD16, E}}}, \
800ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, RD16, E}}, {{0x6, 0xb, 0x3, B30 | IGNORE, ABS32LIST, OP1, OP2, IGNORE, RD16, E}}}
801ed0d50c3Schristos 
802ed0d50c3Schristos #define EXPAND_FROM_IND16(CODE, NAME, OPCODE) \
803ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RDIND,    E}}, {{0x7, 0xc, B31 | RSIND, 0x5, TO_IND, OPCODE, IGNORE, E}}}, \
804ed0d50c3Schristos   EXPAND2_STD_IND (CODE, 2, NAME, OPCODE, B31), \
805ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, ABS16DST, E}}, {{0x7, 0xc, B31 | RSIND, 0x5, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
806ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, ABS32DST, E}}, {{0x7, 0xc, B31 | RSIND, 0x5, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
807ed0d50c3Schristos 
808ed0d50c3Schristos #define EXPAND_FROM_ABS16_W(CODE, NAME, OPCODE) \
809ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, RDIND,    E}}, {{PREFIX_6B15, ABS16LIST, TO_IND,   OPCODE, IGNORE, E}}}, \
810ed0d50c3Schristos   EXPAND2_STD_ABSDISP (CODE, 2, NAME, ABS16SRC, PREFIX_6B15, ABS16LIST, OPCODE, IGNORE), \
811ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, ABS16DST, E}}, {{PREFIX_6B15, ABS16LIST, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
812ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, ABS32DST, E}}, {{PREFIX_6B15, ABS16LIST, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
813ed0d50c3Schristos 
814ed0d50c3Schristos #define EXPAND_FROM_ABS32_W(CODE, NAME, OPCODE) \
815ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, RDIND,    E}}, {{PREFIX_6B35, ABS32LIST, TO_IND,   OPCODE, IGNORE, E}}}, \
816ed0d50c3Schristos   EXPAND2_STD_ABSDISP (CODE, 2, NAME, ABS32SRC, PREFIX_6B35, ABS32LIST, OPCODE, IGNORE), \
817ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, ABS16DST, E}}, {{PREFIX_6B35, ABS32LIST, TO_ABS16, OPCODE, IGNORE, DSTABS16LIST, E}}}, \
818ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, ABS32DST, E}}, {{PREFIX_6B35, ABS32LIST, TO_ABS32, OPCODE, IGNORE, DSTABS32LIST, E}}}
819ed0d50c3Schristos 
820ed0d50c3Schristos #define EXPAND_FROM_IMM16_L(CODE, NAME, OPCODE) \
821ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16U_NS, RDIND,    E}}, {{PREFIX_010E, TO_IND, OPCODE, B30 | IGNORE, IMM16ULIST, E}}}, \
822ed0d50c3Schristos   EXPAND2_STD_IMM (CODE, 2, NAME, IMM16U_NS, PREFIX_010E, OPCODE, B30 | IGNORE, IMM16ULIST), \
823ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16U_NS, ABS16DST, E}}, {{PREFIX_010E, TO_ABS16, OPCODE, B30 | IGNORE, DSTABS16LIST, IMM16ULIST, E}}}, \
824ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16U_NS, ABS32DST, E}}, {{PREFIX_010E, TO_ABS32, OPCODE, B30 | IGNORE, DSTABS32LIST, IMM16ULIST, E}}}
825ed0d50c3Schristos 
826ed0d50c3Schristos #define EXPAND_FROM_IMM32_L(CODE, NAME, OPCODE) \
827ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM32, RDIND,    E}}, {{PREFIX_010E, TO_IND, OPCODE, B31 | IGNORE, IMM32LIST, E}}}, \
828ed0d50c3Schristos   EXPAND2_STD_IMM (CODE, 2, NAME, IMM32, PREFIX_010E, OPCODE, B31 | IGNORE, IMM32LIST), \
829ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM32, ABS16DST, E}}, {{PREFIX_010E, TO_ABS16, OPCODE, B31 | IGNORE, DSTABS16LIST, IMM32LIST, E}}}, \
830ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM32, ABS32DST, E}}, {{PREFIX_010E, TO_ABS32, OPCODE, B31 | IGNORE, DSTABS32LIST, IMM32LIST, E}}}
831ed0d50c3Schristos 
832ed0d50c3Schristos #define EXPAND_FROM_REG32(CODE, NAME, OPCODE) \
833ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS32, RDIND,    E}}, {{PREFIX_0109, TO_IND,   OPCODE, B30 | RS32, E}}}, \
834ed0d50c3Schristos   EXPAND2_STD_SRC (CODE, 2, NAME, RS32, PREFIX_0109, OPCODE, B30 | RS32), \
835ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS32, ABS16DST, E}}, {{PREFIX_0109, TO_ABS16, OPCODE, B30 | RS32, DSTABS16LIST, E}}}, \
836ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RS32, ABS32DST, E}}, {{PREFIX_0109, TO_ABS32, OPCODE, B30 | RS32, DSTABS32LIST, E}}}
837ed0d50c3Schristos 
838ed0d50c3Schristos #define EXPAND_TO_REG32(CODE, NAME, OPCODE) \
839ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND, RD32,    E}}, {{PREFIX_010A, FROM_IND,   OPCODE, B30 | RD32, E}}}, \
840ed0d50c3Schristos   EXPAND2_STD_DST (CODE, 2, NAME, RD32, PREFIX_010A, OPCODE, B30 | RD32), \
841ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC, RD32, E}}, {{PREFIX_010A, FROM_ABS16, OPCODE, B30 | RD32, ABS16LIST, E}}}, \
842ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC, RD32, E}}, {{PREFIX_010A, FROM_ABS32, OPCODE, B30 | RD32, ABS32LIST, E}}}
843ed0d50c3Schristos 
844ed0d50c3Schristos 
845ed0d50c3Schristos #define EXPAND_TWOOP_B(CODE, NAME, OP1, OP2, OP3, OP4, BIT) \
846ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, RDIND,     E}}, {{0x7, 0xd,                 B30 | RDIND,            IGNORE,                      OP1, BIT | IGNORE, IMM8LIST, E}}}, \
847ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, RDPOSTINC, E}}, {{PREFIX_0174,    0x6, 0xc, B30 | RDPOSTINC,  B31 | B20 | IGNORE,                OP1, BIT | IGNORE, IMM8LIST, E}}}, \
848ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, RDPOSTDEC, E}}, {{PREFIX_0176,    0x6, 0xc, B30 | RDPOSTDEC,  B31 | B20 | IGNORE,                OP1, BIT | IGNORE, IMM8LIST, E}}}, \
849ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, RDPREINC,  E}}, {{PREFIX_0175,    0x6, 0xc, B30 | RDPREINC,   B31 | B20 | IGNORE,                OP1, BIT | IGNORE, IMM8LIST, E}}}, \
850ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, RDPREDEC,  E}}, {{PREFIX_0177,    0x6, 0xc, B30 | RDPREDEC,   B31 | B20 | IGNORE,                OP1, BIT | IGNORE, IMM8LIST, E}}}, \
851ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, DISP2DST,  E}}, {{PREFIX_017_D2D, 0x6, 0x8, B30 | DSTDISPREG, B31 | B20 | IGNORE,                OP1, BIT | IGNORE, IMM8LIST, E}}}, \
852ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, DISP16DST, E}}, {{PREFIX_0174,    0x6, 0xe, B30 | DSTDISPREG, B31 | B20 | IGNORE, DSTDISP16LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
853ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, DISP32DST, E}}, {{PREFIX_78R4WD,  0x6, 0xa, 2,                B31 | B20 | IGNORE, DSTDISP32LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
854ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXB16D, E}}, {{PREFIX_0175,    0x6, 0xe, B30 | DSTDISPREG, B31 | B20 | IGNORE, DSTDISP16LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
855ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXW16D, E}}, {{PREFIX_0176,    0x6, 0xe, B30 | DSTDISPREG, B31 | B20 | IGNORE, DSTDISP16LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
856ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXL16D, E}}, {{PREFIX_0177,    0x6, 0xe, B30 | DSTDISPREG, B31 | B20 | IGNORE, DSTDISP16LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
857ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXB32D, E}}, {{PREFIX_78R5WD,  0x6, 0xa, 2,                B31 | B20 | IGNORE, DSTDISP32LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
858ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXW32D, E}}, {{PREFIX_78R6WD,  0x6, 0xa, 2,                B31 | B20 | IGNORE, DSTDISP32LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
859ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, INDEXL32D, E}}, {{PREFIX_78R7WD,  0x6, 0xa, 2,                B31 | B20 | IGNORE, DSTDISP32LIST, OP1, BIT | IGNORE, IMM8LIST, E}}}, \
860ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, ABS8DST,   E}}, {{0x7, 0xf,                                                       DSTABS8LIST,   OP1, BIT | IGNORE, IMM8LIST, E}}}, \
861ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, ABS16DST,  E}}, {{0x6, 0xa, 0x1,                              B31 | B20 | IGNORE, DSTABS16LIST,  OP1, BIT | IGNORE, IMM8LIST, E}}}, \
862ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM8, ABS32DST,  E}}, {{0x6, 0xa, 0x3,                              B31 | B20 | IGNORE, DSTABS32LIST,  OP1, BIT | IGNORE, IMM8LIST, E}}}, \
863ed0d50c3Schristos   {CODE, AV_H8,   2, NAME, {{RS8,  RD8,       E}}, {{OP2, OP3, RS8, RD8, E}}}, \
864ed0d50c3Schristos   EXPAND_FROM_REG8      (CODE, NAME, OP2, OP3, OP4), \
865ed0d50c3Schristos   EXPAND_TO_REG8        (CODE, NAME, OP2, OP3, OP4), \
866ed0d50c3Schristos   EXPAND_FROM_IND8      (CODE, NAME, OP4), \
867ed0d50c3Schristos   EXPAND_STD_MATRIX_B   (CODE, NAME, OP4), \
868ed0d50c3Schristos   EXPAND_FROM_ABS16_B   (CODE, NAME, OP4), \
869ed0d50c3Schristos   EXPAND_FROM_ABS32_B   (CODE, NAME, OP4)
870ed0d50c3Schristos 
871ed0d50c3Schristos #define EXPAND_TWOOP_W(CODE, NAME, OP1, OP2, OP3) \
872ed0d50c3Schristos   {CODE, AV_H8H,  6, NAME, {{IMM16, RD16, E}}, {{0x7, 0x9, OP3, RD16, IMM16LIST, E}}}, \
873ed0d50c3Schristos   EXPAND_FROM_IMM16_W   (CODE, NAME, OP3), \
874ed0d50c3Schristos   EXPAND_FROM_REG16     (CODE, NAME, OP1, OP2, OP3), \
875ed0d50c3Schristos   EXPAND_TO_REG16       (CODE, NAME, OP1, OP2, OP3), \
876ed0d50c3Schristos   EXPAND_FROM_IND16     (CODE, NAME, OP3), \
877ed0d50c3Schristos   EXPAND_STD_MATRIX_W   (CODE, NAME, OP3), \
878ed0d50c3Schristos   EXPAND_FROM_ABS16_W   (CODE, NAME, OP3), \
879ed0d50c3Schristos   EXPAND_FROM_ABS32_W   (CODE, NAME, OP3)
880ed0d50c3Schristos 
881ed0d50c3Schristos #define EXPAND_TWOOP_L(CODE, NAME, OP1)  \
882ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{IMM16U_NS, RD32, E}}, {{0x7, 0xa, OP1, B31 | RD32, IMM16ULIST, E}}}, \
883ed0d50c3Schristos   {CODE, AV_H8H,  6, NAME, {{IMM32,     RD32, E}}, {{0x7, 0xa, OP1, B30 | RD32, IMM32LIST,  E}}}, \
884ed0d50c3Schristos   EXPAND_FROM_IMM16_L   (CODE, NAME, OP1), \
885ed0d50c3Schristos   EXPAND_FROM_IMM32_L   (CODE, NAME, OP1), \
886ed0d50c3Schristos   EXPAND_FROM_REG32     (CODE, NAME, OP1), \
887ed0d50c3Schristos   EXPAND_TO_REG32       (CODE, NAME, OP1), \
888ed0d50c3Schristos   EXPAND_STD_MATRIX_L   (CODE, NAME, OP1)
889ed0d50c3Schristos 
890ed0d50c3Schristos 
891ed0d50c3Schristos /* Old expanders:  */
892ed0d50c3Schristos 
893ed0d50c3Schristos #define BITOP(code, imm, name, op00, op01, op10,  op11, op20, op21, op30, op4) \
894ed0d50c3Schristos   {code, AV_H8,  2, name, {{imm, RD8,      E}}, {{op00, op01, imm,  RD8,   E}}}, \
895ed0d50c3Schristos   {code, AV_H8,  6, name, {{imm, RDIND,    E}}, {{op10, op11, B30 | RDIND, 0,  op00, op01, imm, 0, E}}}, \
896ed0d50c3Schristos   {code, AV_H8,  6, name, {{imm, ABS8DST,  E}}, {{op20, op21, DSTABS8LIST,     op00, op01, imm, 0, E}}}, \
897ed0d50c3Schristos   {code, AV_H8S, 6, name, {{imm, ABS16DST, E}}, {{0x6,  0xa,  0x1,  op30, DST | MEMRELAX | ABS16LIST , op00, op01, imm, op4, E}}}, \
898ed0d50c3Schristos   {code, AV_H8S, 6, name, {{imm, ABS32DST, E}}, {{0x6,  0xa,  0x3,  op30, DST | MEMRELAX | ABS32LIST , op00, op01, imm, op4, E}}}
899ed0d50c3Schristos 
900ed0d50c3Schristos #define BITOP_B(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \
901ed0d50c3Schristos   {code, AV_H8SX, 0, name, {{imm, RDIND,    E}}, {{op10, op11, B30 | RDIND, 0,  op00, op01, imm, op4, E}}}, \
902ed0d50c3Schristos   {code, AV_H8SX, 0, name, {{imm, ABS8DST,  E}}, {{op20, op21, DSTABS8LIST,     op00, op01, imm, op4, E}}}, \
903ed0d50c3Schristos   {code, AV_H8SX, 0, name, {{imm, ABS16DST, E}}, {{0x6,  0xa,  0x1,  op30, DST | ABS16LIST, op00, op01, imm, op4, E}}}, \
904ed0d50c3Schristos   {code, AV_H8SX, 0, name, {{imm, ABS32DST, E}}, {{0x6,  0xa,  0x3,  op30, DST | ABS32LIST, op00, op01, imm, op4, E}}}
905ed0d50c3Schristos 
906ed0d50c3Schristos #define EBITOP(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \
907ed0d50c3Schristos   BITOP(code, imm, name, op00+1, op01, op10, op11, op20, op21, op30, op4), \
908ed0d50c3Schristos   BITOP(code, RS8, name, op00,   op01, op10, op11, op20, op21, op30, op4)
909ed0d50c3Schristos 
910ed0d50c3Schristos #define EBITOP_B(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \
911ed0d50c3Schristos   BITOP_B(code, imm, name, op00+1, op01, op10, op11, op20, op21, op30, op4), \
912ed0d50c3Schristos   BITOP_B(code, RS8, name, op00,   op01, op10, op11, op20, op21, op30, op4)
913ed0d50c3Schristos 
914ed0d50c3Schristos #define WTWOP(code, name, op1, op2) \
915ed0d50c3Schristos   {code, AV_H8, 2, name, {{RS16, RD16, E}}, {{op1, op2, RS16, RD16, E}}}
916ed0d50c3Schristos 
917ed0d50c3Schristos #define BRANCH(code, name, op) \
918ed0d50c3Schristos   {code, AV_H8H, 6, name, {{PCREL16, E}}, {{0x5, 0x8, op, 0x0, PCREL16, DATA3 | B00, E}}}, \
919ed0d50c3Schristos   {code, AV_H8,  4, name, {{PCREL8,  E}}, {{0x4, op,           PCREL8,  DATA  | B00, E}}}
920ed0d50c3Schristos 
921ed0d50c3Schristos 
922ed0d50c3Schristos #define UNOP(code, name, op1, op2) \
923ed0d50c3Schristos   {code, AV_H8, 2, name, {{OR8, E}}, {{op1, op2, 0, OR8, E}}}
924ed0d50c3Schristos 
925ed0d50c3Schristos #define EXPAND_UNOP_STD_B(CODE, NAME, PREFIX, OP1, OP2, OP3) \
926ed0d50c3Schristos   {CODE, AV_H8,   2, NAME, {{OR8,       E}}, {{                                                                  OP1, OP2, OP3, OR8,    E}}}, \
927ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND,     E}}, {{           7, 13, B30 | RSIND,             IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
928ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTINC, E}}, {{PREFIX, 4, 6, 12, B30 | RSPOSTINC,   B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
929ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTDEC, E}}, {{PREFIX, 6, 6, 12, B30 | RSPOSTDEC,   B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
930ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREINC,  E}}, {{PREFIX, 5, 6, 12, B30 | RSPREINC,    B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
931ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREDEC,  E}}, {{PREFIX, 7, 6, 12, B30 | RSPREDEC,    B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
932ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP2SRC,  E}}, {{PREFIX, B30 | B21 | DISP2SRC, 6,  8, B30 | DISPREG, B31 | IGNORE, OP1, OP2, OP3, IGNORE, E}}}, \
933ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP16SRC, E}}, {{PREFIX, 4, 6, 14, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
934ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP32SRC, E}}, {{7, 8, B30 | DISPREG, 4,    6, 10, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
935ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB16,  E}}, {{PREFIX, 5, 6, 14, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
936ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW16,  E}}, {{PREFIX, 6, 6, 14, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
937ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL16,  E}}, {{PREFIX, 7, 6, 14, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
938ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB32,  E}}, {{7, 8, B30 | DISPREG, 5,    6, 10, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
939ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW32,  E}}, {{7, 8, B30 | DISPREG, 6,    6, 10, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
940ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL32,  E}}, {{7, 8, B30 | DISPREG, 7,    6, 10, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
941ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS8SRC,   E}}, {{                           7, 15,                   ABS8LIST,     OP1, OP2, OP3, IGNORE, E}}}, \
942ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC,  E}}, {{                           6, 10, 1, B31 | IGNORE,  ABS16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
943ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC,  E}}, {{                           6, 10, 3, B31 | IGNORE,  ABS32LIST,    OP1, OP2, OP3, IGNORE, E}}}
944ed0d50c3Schristos 
945ed0d50c3Schristos #define EXPAND_UNOP_STD_W(CODE, NAME, PREFIX, OP1, OP2, OP3) \
946ed0d50c3Schristos   {CODE, AV_H8H,  2, NAME, {{OR16,      E}}, {{                                                                  OP1, OP2, OP3, OR16,   E}}}, \
947ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND,     E}}, {{           7, 13, B31 | RSIND,             IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
948ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTINC, E}}, {{PREFIX, 4, 6, 13, B30 | RSPOSTINC,   B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
949ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTDEC, E}}, {{PREFIX, 6, 6, 13, B30 | RSPOSTDEC,   B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
950ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREINC,  E}}, {{PREFIX, 5, 6, 13, B30 | RSPREINC,    B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
951ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREDEC,  E}}, {{PREFIX, 7, 6, 13, B30 | RSPREDEC,    B31 | IGNORE,                OP1, OP2, OP3, IGNORE, E}}}, \
952ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP2SRC,  E}}, {{PREFIX, B30 | B21 | DISP2SRC, 6,  9, B30 | DISPREG, B31 | IGNORE, OP1, OP2, OP3, IGNORE, E}}}, \
953ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP16SRC, E}}, {{PREFIX, 4, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
954ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP32SRC, E}}, {{7, 8, B30 | DISPREG, 4,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
955ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB16,  E}}, {{PREFIX, 5, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
956ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW16,  E}}, {{PREFIX, 6, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
957ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL16,  E}}, {{PREFIX, 7, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
958ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB32,  E}}, {{7, 8, B30 | DISPREG, 5,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
959ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW32,  E}}, {{7, 8, B30 | DISPREG, 6,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
960ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL32,  E}}, {{7, 8, B30 | DISPREG, 7,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, IGNORE, E}}}, \
961ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC,  E}}, {{                           6, 11, 1, B31 | IGNORE,  ABS16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
962ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC,  E}}, {{                           6, 11, 3, B31 | IGNORE,  ABS32LIST,    OP1, OP2, OP3, IGNORE, E}}}
963ed0d50c3Schristos 
964ed0d50c3Schristos #define EXPAND_UNOP_STD_L(CODE, NAME, PREFIX, OP1, OP2, OP3) \
965ed0d50c3Schristos   {CODE, AV_H8H,  2, NAME, {{OR32,      E}}, {{                                                                  OP1, OP2, OP3, B30 | OR32,   E}}}, \
966ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSIND,     E}}, {{PREFIX, 4, 6,  9, B30 | RSIND,       B31 | IGNORE,                OP1, OP2, OP3, B30 | IGNORE, E}}}, \
967ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTINC, E}}, {{PREFIX, 4, 6, 13, B30 | RSPOSTINC,   B31 | IGNORE,                OP1, OP2, OP3, B30 | IGNORE, E}}}, \
968ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPOSTDEC, E}}, {{PREFIX, 6, 6, 13, B30 | RSPOSTDEC,   B31 | IGNORE,                OP1, OP2, OP3, B30 | IGNORE, E}}}, \
969ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREINC,  E}}, {{PREFIX, 5, 6, 13, B30 | RSPREINC,    B31 | IGNORE,                OP1, OP2, OP3, B30 | IGNORE, E}}}, \
970ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{RSPREDEC,  E}}, {{PREFIX, 7, 6, 13, B30 | RSPREDEC,    B31 | IGNORE,                OP1, OP2, OP3, B30 | IGNORE, E}}}, \
971ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP2SRC,  E}}, {{PREFIX, B30 | B21 | DISP2SRC, 6,  9, B30 | DISPREG, B31 | IGNORE, OP1, OP2, OP3, B30 | IGNORE, E}}}, \
972ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP16SRC, E}}, {{PREFIX, 4, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
973ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{DISP32SRC, E}}, {{7, 8, B31 | DISPREG, 4,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
974ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB16,  E}}, {{PREFIX, 5, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
975ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW16,  E}}, {{PREFIX, 6, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
976ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL16,  E}}, {{PREFIX, 7, 6, 15, B30 | DISPREG,     B31 | IGNORE,  DISP16LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
977ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXB32,  E}}, {{7, 8, B31 | DISPREG, 5,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
978ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXW32,  E}}, {{7, 8, B31 | DISPREG, 6,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
979ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{INDEXL32,  E}}, {{7, 8, B31 | DISPREG, 7,    6, 11, 2, B31 | IGNORE,  DISP32LIST,   OP1, OP2, OP3, B30 | IGNORE, E}}}, \
980ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS16SRC,  E}}, {{PREFIX, 4,                 6, 11, 0, B31 | IGNORE,  ABS16LIST,    OP1, OP2, OP3, B30 | IGNORE, E}}}, \
981ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{ABS32SRC,  E}}, {{PREFIX, 4,                 6, 11, 2, B31 | IGNORE,  ABS32LIST,    OP1, OP2, OP3, B30 | IGNORE, E}}}
982ed0d50c3Schristos 
983*b88e3e88Schristos #define EXPAND_UNOP_EXTENDED_B(CODE, MODEL, NAME, CONST, PREFIX, OP1, OP2, OP3) \
984*b88e3e88Schristos   {CODE, MODEL,   2, NAME, {{CONST, RD8,   E}}, {{                                                                         OP1, OP2, OP3, RD8,    E}}}, \
985ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDIND,     E}}, {{           7, 13, B30 | RDIND,             IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
986ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTINC, E}}, {{PREFIX, 4, 6, 12, B30 | RDPOSTINC,   B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
987ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTDEC, E}}, {{PREFIX, 6, 6, 12, B30 | RDPOSTDEC,   B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
988ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREINC,  E}}, {{PREFIX, 5, 6, 12, B30 | RDPREINC,    B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
989ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREDEC,  E}}, {{PREFIX, 7, 6, 12, B30 | RDPREDEC,    B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
990ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP2DST,  E}}, {{PREFIX, B30 | B21 | DISP2DST, 6,  8, B30 | DSTDISPREG, B31 | IGNORE, OP1, OP2, OP3, IGNORE, E}}}, \
991ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP16DST, E}}, {{PREFIX, 4, 6, 14, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
992ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP32DST, E}}, {{7, 8, B30 | DSTDISPREG, 4, 6, 10, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
993ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB16D, E}}, {{PREFIX, 5, 6, 14, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
994ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW16D, E}}, {{PREFIX, 6, 6, 14, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
995ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL16D, E}}, {{PREFIX, 7, 6, 14, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
996ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB32D, E}}, {{7, 8, B30 | DSTDISPREG, 5, 6, 10, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
997ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW32D, E}}, {{7, 8, B30 | DSTDISPREG, 6, 6, 10, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
998ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL32D, E}}, {{7, 8, B30 | DSTDISPREG, 7, 6, 10, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
999ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS8DST,   E}}, {{                           7, 15,                  DSTABS8LIST,      OP1, OP2, OP3, IGNORE, E}}}, \
1000ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS16DST,  E}}, {{                           6, 10, 1, B31 | IGNORE, DSTABS16LIST,     OP1, OP2, OP3, IGNORE, E}}}, \
1001ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS32DST,  E}}, {{                           6, 10, 3, B31 | IGNORE, DSTABS32LIST,     OP1, OP2, OP3, IGNORE, E}}}
1002ed0d50c3Schristos 
1003*b88e3e88Schristos #define EXPAND_UNOP_EXTENDED_W(CODE, MODEL, NAME, CONST, PREFIX, OP1, OP2, OP3) \
1004*b88e3e88Schristos   {CODE, MODEL,   2, NAME, {{CONST, RD16,      E}}, {{                                                                     OP1, OP2, OP3, RD16,   E}}}, \
1005ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDIND,     E}}, {{           7, 13, B31 | RDIND,             IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
1006ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTINC, E}}, {{PREFIX, 4, 6, 13, B30 | RDPOSTINC,   B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
1007ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTDEC, E}}, {{PREFIX, 6, 6, 13, B30 | RDPOSTDEC,   B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
1008ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREINC,  E}}, {{PREFIX, 5, 6, 13, B30 | RDPREINC,    B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
1009ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREDEC,  E}}, {{PREFIX, 7, 6, 13, B30 | RDPREDEC,    B31 | IGNORE,                   OP1, OP2, OP3, IGNORE, E}}}, \
1010ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP2DST,  E}}, {{PREFIX, B30 | B21 | DISP2DST, 6,  9, B30 | DSTDISPREG, B31 | IGNORE, OP1, OP2, OP3, IGNORE, E}}}, \
1011ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP16DST, E}}, {{PREFIX, 4, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1012ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP32DST, E}}, {{7, 8, B30 | DSTDISPREG, 4, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1013ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB16D, E}}, {{PREFIX, 5, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1014ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW16D, E}}, {{PREFIX, 6, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1015ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL16D, E}}, {{PREFIX, 7, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1016ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB32D, E}}, {{7, 8, B30 | DSTDISPREG, 5, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1017ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW32D, E}}, {{7, 8, B30 | DSTDISPREG, 6, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1018ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL32D, E}}, {{7, 8, B30 | DSTDISPREG, 7, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, IGNORE, E}}}, \
1019ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS16DST,  E}}, {{                           6, 11, 1, B31 | IGNORE, DSTABS16LIST,     OP1, OP2, OP3, IGNORE, E}}}, \
1020ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS32DST,  E}}, {{                           6, 11, 3, B31 | IGNORE, DSTABS32LIST,     OP1, OP2, OP3, IGNORE, E}}}
1021ed0d50c3Schristos 
1022*b88e3e88Schristos #define EXPAND_UNOP_EXTENDED_L(CODE, MODEL, NAME, CONST, PREFIX, OP1, OP2, OP3, BIT) \
1023*b88e3e88Schristos   {CODE, MODEL,   2, NAME, {{CONST, RD32,      E}}, {{                                                                     OP1, OP2, OP3, BIT | RD32,   E}}}, \
1024ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDIND,     E}}, {{PREFIX, 4, 6,  9, B30 | RDIND,       B31 | IGNORE,                   OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1025ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTINC, E}}, {{PREFIX, 4, 6, 13, B30 | RDPOSTINC,   B31 | IGNORE,                   OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1026ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPOSTDEC, E}}, {{PREFIX, 6, 6, 13, B30 | RDPOSTDEC,   B31 | IGNORE,                   OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1027ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREINC,  E}}, {{PREFIX, 5, 6, 13, B30 | RDPREINC,    B31 | IGNORE,                   OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1028ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, RDPREDEC,  E}}, {{PREFIX, 7, 6, 13, B30 | RDPREDEC,    B31 | IGNORE,                   OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1029ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP2DST,  E}}, {{PREFIX, B30 | B21 | DISP2DST, 6,  9, B30 | DSTDISPREG, B31 | IGNORE, OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1030ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP16DST, E}}, {{PREFIX, 4, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1031ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, DISP32DST, E}}, {{7, 8, B31 | DSTDISPREG, 4, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1032ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB16D, E}}, {{PREFIX, 5, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1033ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW16D, E}}, {{PREFIX, 6, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1034ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL16D, E}}, {{PREFIX, 7, 6, 15, B30 | DSTDISPREG,  B31 | IGNORE, DSTDISP16LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1035ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXB32D, E}}, {{7, 8, B31 | DSTDISPREG, 5, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1036ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXW32D, E}}, {{7, 8, B31 | DSTDISPREG, 6, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1037ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, INDEXL32D, E}}, {{7, 8, B31 | DSTDISPREG, 7, 6, 11, 2, B31 | IGNORE, DSTDISP32LIST,    OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1038ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS16DST,  E}}, {{PREFIX, 4,                 6, 11, 0, B31 | IGNORE, DSTABS16LIST,     OP1, OP2, OP3, BIT | IGNORE, E}}}, \
1039ed0d50c3Schristos   {CODE, AV_H8SX, 0, NAME, {{CONST, ABS32DST,  E}}, {{PREFIX, 4,                 6, 11, 2, B31 | IGNORE, DSTABS32LIST,     OP1, OP2, OP3, BIT | IGNORE, E}}}
1040ed0d50c3Schristos 
1041ed0d50c3Schristos #define PREFIXLDC 0x0, 0x1, 0x4, B30 | CCR_EXR | DST
1042ed0d50c3Schristos #define PREFIXSTC 0x0, 0x1, 0x4, B30 | CCR_EXR | SRC
1043ed0d50c3Schristos 
1044ed0d50c3Schristos #define O(op, size)  (op * 4 + size)
1045ed0d50c3Schristos #define OP_SIZE(HOW) (HOW % 4)
1046ed0d50c3Schristos #define OP_KIND(HOW) (HOW / 4)
1047ed0d50c3Schristos 
1048ed0d50c3Schristos enum h8_asm_codes
1049ed0d50c3Schristos {
1050ed0d50c3Schristos   O_RECOMPILE =	 0,
1051ed0d50c3Schristos   O_ADD,
1052ed0d50c3Schristos   O_ADDX,
1053ed0d50c3Schristos   O_AND,
1054ed0d50c3Schristos   O_BAND,
1055ed0d50c3Schristos   O_BRA,
1056ed0d50c3Schristos   O_BRAB,
1057ed0d50c3Schristos   O_BRAW,
1058ed0d50c3Schristos   O_BRAL,
1059ed0d50c3Schristos   O_BRAS,
1060ed0d50c3Schristos   O_BRABC,
1061ed0d50c3Schristos   O_BRABS,
1062ed0d50c3Schristos   O_BSRBC,
1063ed0d50c3Schristos   O_BSRBS,
1064ed0d50c3Schristos   O_BRN,
1065ed0d50c3Schristos   O_BHI,
1066ed0d50c3Schristos   O_BLS,
1067ed0d50c3Schristos   O_BCC,
1068ed0d50c3Schristos   O_BCS,
1069ed0d50c3Schristos   O_BNE,
1070ed0d50c3Schristos   O_BVC,
1071ed0d50c3Schristos   O_BVS,
1072ed0d50c3Schristos   O_BPL,
1073ed0d50c3Schristos   O_BMI,
1074ed0d50c3Schristos   O_BGE,
1075ed0d50c3Schristos   O_BLT,
1076ed0d50c3Schristos   O_BGT,
1077ed0d50c3Schristos   O_BLE,
1078ed0d50c3Schristos   O_ANDC,
1079ed0d50c3Schristos   O_BEQ,
1080ed0d50c3Schristos   O_BCLR,
1081ed0d50c3Schristos   O_BCLREQ,
1082ed0d50c3Schristos   O_BCLRNE,
1083ed0d50c3Schristos   O_BSETEQ,
1084ed0d50c3Schristos   O_BSETNE,
1085ed0d50c3Schristos   O_BFLD,
1086ed0d50c3Schristos   O_BFST,
1087ed0d50c3Schristos   O_BIAND,
1088ed0d50c3Schristos   O_BILD,
1089ed0d50c3Schristos   O_BIOR,
1090ed0d50c3Schristos   O_BIXOR,
1091ed0d50c3Schristos   O_BIST,
1092ed0d50c3Schristos   O_BISTZ,
1093ed0d50c3Schristos   O_BLD,
1094ed0d50c3Schristos   O_BNOT,
1095ed0d50c3Schristos   O_BOR,
1096ed0d50c3Schristos   O_BSET,
1097ed0d50c3Schristos   O_BSR,
1098ed0d50c3Schristos   O_BXOR,
1099ed0d50c3Schristos   O_CMP,
1100ed0d50c3Schristos   O_DAA,
1101ed0d50c3Schristos   O_DAS,
1102ed0d50c3Schristos   O_DEC,
1103ed0d50c3Schristos   O_DIVU,
1104ed0d50c3Schristos   O_DIVS,
1105ed0d50c3Schristos   O_DIVXU,
1106ed0d50c3Schristos   O_DIVXS,
1107ed0d50c3Schristos   O_INC,
1108ed0d50c3Schristos   O_LDC,
1109ed0d50c3Schristos   O_MOV,
1110ed0d50c3Schristos   O_MOVAB,
1111ed0d50c3Schristos   O_MOVAW,
1112ed0d50c3Schristos   O_MOVAL,
1113ed0d50c3Schristos   O_MOVMD,
1114ed0d50c3Schristos   O_MOVSD,
1115ed0d50c3Schristos   O_OR,
1116ed0d50c3Schristos   O_ROTL,
1117ed0d50c3Schristos   O_ROTR,
1118ed0d50c3Schristos   O_ROTXL,
1119ed0d50c3Schristos   O_ROTXR,
1120ed0d50c3Schristos   O_BPT,
1121ed0d50c3Schristos   O_SHAL,
1122ed0d50c3Schristos   O_SHAR,
1123ed0d50c3Schristos   O_SHLL,
1124ed0d50c3Schristos   O_SHLR,
1125ed0d50c3Schristos   O_SUB,
1126ed0d50c3Schristos   O_SUBS,
1127ed0d50c3Schristos   O_TRAPA,
1128ed0d50c3Schristos   O_XOR,
1129ed0d50c3Schristos   O_XORC,
1130ed0d50c3Schristos   O_BST,
1131ed0d50c3Schristos   O_BSTZ,
1132ed0d50c3Schristos   O_BTST,
1133ed0d50c3Schristos   O_EEPMOV,
1134ed0d50c3Schristos   O_EXTS,
1135ed0d50c3Schristos   O_EXTU,
1136ed0d50c3Schristos   O_JMP,
1137ed0d50c3Schristos   O_JSR,
1138ed0d50c3Schristos   O_MULU,
1139ed0d50c3Schristos   O_MULUU,
1140ed0d50c3Schristos   O_MULS,
1141ed0d50c3Schristos   O_MULSU,
1142ed0d50c3Schristos   O_MULXU,
1143ed0d50c3Schristos   O_MULXS,
1144ed0d50c3Schristos   O_NOP,
1145ed0d50c3Schristos   O_NOT,
1146ed0d50c3Schristos   O_ORC,
1147ed0d50c3Schristos   O_RTE,
1148ed0d50c3Schristos   O_RTEL,
1149ed0d50c3Schristos   O_STC,
1150ed0d50c3Schristos   O_SUBX,
1151ed0d50c3Schristos   O_NEG,
1152ed0d50c3Schristos   O_RTS,
1153ed0d50c3Schristos   O_RTSL,
1154ed0d50c3Schristos   O_SLEEP,
1155ed0d50c3Schristos   O_ILL,
1156ed0d50c3Schristos   O_ADDS,
1157ed0d50c3Schristos   O_SYSCALL,
1158ed0d50c3Schristos   O_TAS,
1159ed0d50c3Schristos   O_CLRMAC,
1160ed0d50c3Schristos   O_LDMAC,
1161ed0d50c3Schristos   O_MAC,
1162ed0d50c3Schristos   O_LDM,
1163ed0d50c3Schristos   O_STM,
1164ed0d50c3Schristos   O_STMAC,
1165ed0d50c3Schristos   O_LAST,
1166ed0d50c3Schristos   /* Change made for System Call processing.  */
1167ed0d50c3Schristos   O_SYS_CREAT,
1168ed0d50c3Schristos   O_SYS_OPEN,
1169ed0d50c3Schristos   O_SYS_READ,
1170ed0d50c3Schristos   O_SYS_WRITE,
1171ed0d50c3Schristos   O_SYS_LSEEK,
1172ed0d50c3Schristos   O_SYS_CLOSE,
1173ed0d50c3Schristos   O_SYS_STAT,
1174ed0d50c3Schristos   O_SYS_FSTAT,
1175ed0d50c3Schristos /* Space reserved for future file I/O system calls.  */
1176ed0d50c3Schristos  O_SYS_CMDLINE
1177ed0d50c3Schristos   /* End of System Call specific Changes.  */
1178ed0d50c3Schristos };
1179ed0d50c3Schristos 
1180ed0d50c3Schristos enum h8_size
1181ed0d50c3Schristos {
1182ed0d50c3Schristos   SB =	 0,
1183ed0d50c3Schristos   SW =	 1,
1184ed0d50c3Schristos   SL =	 2,
1185ed0d50c3Schristos   SN =	 3
1186ed0d50c3Schristos };
1187ed0d50c3Schristos 
1188ed0d50c3Schristos 
1189ed0d50c3Schristos /* FIXME: Lots of insns have "E, 0, 0, 0, 0" in the nibble code sequences.
1190ed0d50c3Schristos    Methinks the zeroes aren't necessary.  Once confirmed, nuke 'em.  */
1191ed0d50c3Schristos 
1192ed0d50c3Schristos struct h8_opcode h8_opcodes[] =
1193ed0d50c3Schristos {
1194ed0d50c3Schristos   {O (O_ADD, SB), AV_H8,   2, "add.b", {{IMM8,      RD8,      E}}, {{0x8, RD8, IMM8LIST, E}}},
1195ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_ADD, SB), "add.b", 0x8, 0x0, 0x8, 0x1, 0),
1196ed0d50c3Schristos 
1197ed0d50c3Schristos   {O (O_ADD, SW), AV_H8,   6, "add.w", {{RS16,      RD16,     E}}, {{0x0, 0x9, RS16,         RD16,   E}}},
1198ed0d50c3Schristos   {O (O_ADD, SW), AV_H8SX, 0, "add.w", {{IMM3NZ_NS, RD16,     E}}, {{0x0, 0xa, B30 | IMM3NZ, RD16,   E}}},
1199ed0d50c3Schristos   {O (O_ADD, SW), AV_H8SX, 0, "add.w", {{IMM3NZ_NS, RDIND,    E}}, {{0x7, 0xd,      B31 | RDIND,  IGNORE,       0x0, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1200ed0d50c3Schristos   {O (O_ADD, SW), AV_H8SX, 0, "add.w", {{IMM3NZ_NS, ABS16DST, E}}, {{0x6, 0xb, 0x1, B31 | IGNORE, DSTABS16LIST, 0x0, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1201ed0d50c3Schristos   {O (O_ADD, SW), AV_H8SX, 0, "add.w", {{IMM3NZ_NS, ABS32DST, E}}, {{0x6, 0xb, 0x3, B31 | IGNORE, DSTABS32LIST, 0x0, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1202ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_ADD, SW), "add.w", 0x0, 0x9, 0x1),
1203ed0d50c3Schristos 
1204ed0d50c3Schristos   {O (O_ADD, SL), AV_H8H,  6, "add.l", {{RS32,      RD32,     E}}, {{0x0, 0xa, B31 | RS32,   B30 | RD32, E}}},
1205ed0d50c3Schristos   {O (O_ADD, SL), AV_H8SX, 0, "add.l", {{IMM3NZ_NS, RD32,     E}}, {{0x0, 0xa, B31 | IMM3NZ, B31 | RD32, E}}},
1206ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_ADD, SL), "add.l", 0x1),
1207ed0d50c3Schristos 
1208ed0d50c3Schristos   {O (O_ADDS, SL), AV_H8,  2, "adds",  {{KBIT,  RDP,  E}}, {{0x0, 0xB,KBIT, RDP, E}}},
1209ed0d50c3Schristos 
1210ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8,   2, "addx",   {{IMM8,      RD8,       E}}, {{0x9, RD8, IMM8LIST, E}}},
1211ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{IMM8,      RDIND,     E}}, {{0x7, 0xd, B30 | RDIND, IGNORE,                        0x9, IGNORE, IMM8LIST, E}}},
1212ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{IMM8,      RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RDPOSTDEC, B31 | IGNORE, 0x9, IGNORE, IMM8LIST, E}}},
1213ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8,   2, "addx",   {{RS8,       RD8,       E}}, {{0x0, 0xe, RS8,  RD8,    E}}},
1214ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RS8,       RDIND,     E}}, {{0x7, 0xd, B30 | RDIND, IGNORE,                              0x0, 0xe, RS8, IGNORE, E}}},
1215ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RS8,       RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RDPOSTDEC, B31       | IGNORE, 0x0, 0xe, RS8, IGNORE, E}}},
1216ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RSIND,     RD8,       E}}, {{0x7, 0xc, B30 | RSIND, IGNORE,                              0x0, 0xe, IGNORE, RD8, E}}},
1217ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RSPOSTDEC, RD8,       E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RSPOSTDEC, B30 | B20 | IGNORE, 0x0, 0xe, IGNORE, RD8, E}}},
1218ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RSIND,     RDIND,     E}}, {{PREFIX_0174, 0x6, 0x8, B30 | RSIND,     0xd, 0x0, RDIND,     0x1, IGNORE, E}}},
1219ed0d50c3Schristos   {O (O_ADDX, SB), AV_H8SX, 0, "addx.b", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x1, IGNORE, E}}},
1220ed0d50c3Schristos 
1221ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{IMM16,     RD16,      E}}, {{PREFIX_0151,                         0x7, 0x9, 0x1, RD16,   IMM16LIST, E}}},
1222ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{IMM16,     RDIND,     E}}, {{0x7, 0xd, B31 | RDIND, B01 | IGNORE, 0x7, 0x9, 0x1, IGNORE, IMM16LIST, E}}},
1223ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{IMM16,     RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x7, 0x9, 0x1, IGNORE, IMM16LIST, E}}},
1224ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RS16,      RD16,      E}}, {{PREFIX_0151, 0x0, 0x9, RS16,  RD16,    E}}},
1225ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RS16,      RDIND,     E}}, {{0x7, 0xd, B31 | RDIND, B01 | IGNORE, 0x0, 0x9, RS16, IGNORE, E}}},
1226ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RS16,      RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x0, 0x9, RS16, IGNORE, E}}},
1227ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RSIND,     RD16,      E}}, {{0x7, 0xc, B31 | RSIND, B01 | IGNORE, 0x0, 0x9, IGNORE, RD16, E}}},
1228ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RSPOSTDEC, RD16,      E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RSPOSTDEC, B30 | B20 | B01 | IGNORE, 0x0, 0x9, IGNORE, RD16, E}}},
1229ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RSIND,     RDIND,     E}}, {{PREFIX_0154, 0x6, 0x9, B30 | RSIND,     0xd, 0x0, RDIND,     0x1, IGNORE, E}}},
1230ed0d50c3Schristos   {O (O_ADDX, SW), AV_H8SX, 0, "addx.w", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x1, IGNORE, E}}},
1231ed0d50c3Schristos 
1232ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{IMM32,     RD32,      E}}, {{PREFIX_0101, 0x7, 0xa, 0x1,  RD32, IMM32LIST, E}}},
1233ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{IMM32,     RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RDIND,     B31 | B20 | B01 | IGNORE, 0x7, 0xa, 0x1, IGNORE, IMM32LIST, E}}},
1234ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{IMM32,     RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x7, 0xa, 0x1, IGNORE, IMM32LIST, E}}},
1235ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RS32,      RD32,      E}}, {{PREFIX_0101, 0x0, 0xa, B31 | RS32,  B30 | RD32,    E}}},
1236ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RS32,      RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RDIND,     B31 | B20 | B01 | IGNORE, 0x0, 0xa, B31 | RS32, B30 | IGNORE, E}}},
1237ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RS32,      RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x0, 0xa, B31 | RS32, B30 | IGNORE, E}}},
1238ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RSIND,     RD32,      E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RSIND,     B30 | B20 | B01 | IGNORE, 0x0, 0xa, B31 | IGNORE, B30 | RD32, E}}},
1239ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RSPOSTDEC, RD32,      E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RSPOSTDEC, B30 | B20 | B01 | IGNORE, 0x0, 0xa, B31 | IGNORE, B30 | RD32, E}}},
1240ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RSIND,     RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RSIND,     0xd, 0x0, RDIND,     0x1, IGNORE, E}}},
1241ed0d50c3Schristos   {O (O_ADDX, SL), AV_H8SX, 0, "addx.l", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x1, IGNORE, E}}},
1242ed0d50c3Schristos 
1243ed0d50c3Schristos   {O (O_AND, SB), AV_H8,   2, "and.b", {{IMM8, RD8,  E}}, {{0xe, RD8, IMM8LIST, E}}},
1244ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_AND, SB), "and.b", 0xe, 0x1, 0x6, 0x6, 0),
1245ed0d50c3Schristos 
1246ed0d50c3Schristos   {O (O_AND, SW), AV_H8,   2, "and.w", {{RS16, RD16, E}}, {{0x6, 0x6, RS16, RD16,   E}}},
1247ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_AND, SW), "and.w", 0x6, 0x6, 0x6),
1248ed0d50c3Schristos 
1249ed0d50c3Schristos   {O (O_AND, SL), AV_H8H,  2, "and.l", {{RS32,  RD32, E}}, {{0x0, 0x1, 0xF, 0x0, 0x6, 0x6, B30 | RS32, B30 | RD32, E}}},
1250ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_AND, SL), "and.l", 0x6),
1251ed0d50c3Schristos 
1252ed0d50c3Schristos   {O (O_ANDC, SB), AV_H8,  2, "andc", {{IMM8,  CCR | DST, E}}, {{0x0, 0x6, IMM8LIST, E}}},
1253ed0d50c3Schristos   {O (O_ANDC, SB), AV_H8S, 2, "andc", {{IMM8,  EXR | DST, E}}, {{0x0, 0x1, 0x4, EXR | DST, 0x0, 0x6, IMM8LIST, E}}},
1254ed0d50c3Schristos 
1255ed0d50c3Schristos   BRANCH (O (O_BRA, SB), "bra", 0x0),
1256ed0d50c3Schristos 
1257ed0d50c3Schristos   {O (O_BRAB, SB), AV_H8SX, 0, "bra", {{LOWREG | L_8,  E}}, {{0x5, 0x9, LOWREG | L_8  | B30, 0x5, E}}},
1258ed0d50c3Schristos   {O (O_BRAW, SW), AV_H8SX, 0, "bra", {{LOWREG | L_16, E}}, {{0x5, 0x9, LOWREG | L_16 | B30, 0x6, E}}},
1259ed0d50c3Schristos   {O (O_BRAL, SL), AV_H8SX, 0, "bra", {{RS32, E}}, {{0x5, 0x9, RS32 | B30, 0x7, E}}},
1260ed0d50c3Schristos 
1261ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, RDIND,    OP3PCREL8}},  {{0x7, 0xC, B30 | RDIND, 0x0,            0x4, B30 | IMM3,      OP3PCREL8,  DATA,  E}}},
1262ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS8DST,  OP3PCREL8}},  {{0x7, 0xE, DSTABS8LIST,                 0x4, B30 | IMM3,      OP3PCREL8,  DATA,  E}}},
1263ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS16DST, OP3PCREL8}},  {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST,      0x4, B30 | IMM3,      OP3PCREL8,  DATA,  E}}},
1264ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS32DST, OP3PCREL8}},  {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST,      0x4, B30 | IMM3,      OP3PCREL8,  DATA,  E}}},
1265ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, RDIND,    OP3PCREL8}},  {{0x7, 0xC, B30 | RDIND, 0x0,            0x4, B31 | IMM3,      OP3PCREL8,  DATA,  E}}},
1266ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS8DST,  OP3PCREL8}},  {{0x7, 0xE, DSTABS8LIST,                 0x4, B31 | IMM3,      OP3PCREL8,  DATA,  E}}},
1267ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS16DST, OP3PCREL8}},  {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST,      0x4, B31 | IMM3,      OP3PCREL8,  DATA,  E}}},
1268ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS32DST, OP3PCREL8}},  {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST,      0x4, B31 | IMM3,      OP3PCREL8,  DATA,  E}}},
1269ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, RDIND,    OP3PCREL16}}, {{0x7, 0xC, B30 | RDIND, 0x0,       0x5, 0x8, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1270ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS8DST,  OP3PCREL16}}, {{0x7, 0xE, DSTABS8LIST,            0x5, 0x8, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1271ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS16DST, OP3PCREL16}}, {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST, 0x5, 0x8, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1272ed0d50c3Schristos   {O (O_BRABC, SB), AV_H8SX, 0, "bra/bc", {{IMM3, ABS32DST, OP3PCREL16}}, {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST, 0x5, 0x8, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1273ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, RDIND,    OP3PCREL16}}, {{0x7, 0xC, B30 | RDIND, 0x0,       0x5, 0x8, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1274ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS8DST,  OP3PCREL16}}, {{0x7, 0xE, DSTABS8LIST,            0x5, 0x8, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1275ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS16DST, OP3PCREL16}}, {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST, 0x5, 0x8, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1276ed0d50c3Schristos   {O (O_BRABS, SB), AV_H8SX, 0, "bra/bs", {{IMM3, ABS32DST, OP3PCREL16}}, {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST, 0x5, 0x8, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1277ed0d50c3Schristos 
1278ed0d50c3Schristos   {O (O_BRAS,  SB), AV_H8SX, 0, "bra/s",  {{PCREL8, E}}, {{0x4, 0x0, PCREL8, DATA | B01, E}}},
1279ed0d50c3Schristos 
1280ed0d50c3Schristos   {O (O_BSRBC, SB), AV_H8SX, 0, "bsr/bc", {{IMM3, RDIND,    OP3PCREL16}}, {{0x7, 0xC, B30 | RDIND, 0x0,       0x5, 0xC, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1281ed0d50c3Schristos   {O (O_BSRBC, SB), AV_H8SX, 0, "bsr/bc", {{IMM3, ABS8DST,  OP3PCREL16}}, {{0x7, 0xE, DSTABS8LIST,            0x5, 0xC, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1282ed0d50c3Schristos   {O (O_BSRBC, SB), AV_H8SX, 0, "bsr/bc", {{IMM3, ABS16DST, OP3PCREL16}}, {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST, 0x5, 0xC, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1283ed0d50c3Schristos   {O (O_BSRBC, SB), AV_H8SX, 0, "bsr/bc", {{IMM3, ABS32DST, OP3PCREL16}}, {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST, 0x5, 0xC, B30 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1284ed0d50c3Schristos   {O (O_BSRBS, SB), AV_H8SX, 0, "bsr/bs", {{IMM3, RDIND,    OP3PCREL16}}, {{0x7, 0xC, B30 | RDIND, 0x0,       0x5, 0xC, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1285ed0d50c3Schristos   {O (O_BSRBS, SB), AV_H8SX, 0, "bsr/bs", {{IMM3, ABS8DST,  OP3PCREL16}}, {{0x7, 0xE, DSTABS8LIST,            0x5, 0xC, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1286ed0d50c3Schristos   {O (O_BSRBS, SB), AV_H8SX, 0, "bsr/bs", {{IMM3, ABS16DST, OP3PCREL16}}, {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST, 0x5, 0xC, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1287ed0d50c3Schristos   {O (O_BSRBS, SB), AV_H8SX, 0, "bsr/bs", {{IMM3, ABS32DST, OP3PCREL16}}, {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST, 0x5, 0xC, B31 | IMM3, 0x0, OP3PCREL16, DATA3, E}}},
1288ed0d50c3Schristos 
1289ed0d50c3Schristos   BRANCH (O (O_BRA, SB), "bt",  0x0),
1290ed0d50c3Schristos   BRANCH (O (O_BRN, SB), "brn", 0x1),
1291ed0d50c3Schristos   BRANCH (O (O_BRN, SB), "bf",  0x1),
1292ed0d50c3Schristos   BRANCH (O (O_BHI, SB), "bhi", 0x2),
1293ed0d50c3Schristos   BRANCH (O (O_BLS, SB), "bls", 0x3),
1294ed0d50c3Schristos   BRANCH (O (O_BCC, SB), "bcc", 0x4),
1295ed0d50c3Schristos   BRANCH (O (O_BCC, SB), "bhs", 0x4),
1296ed0d50c3Schristos   BRANCH (O (O_BCS, SB), "bcs", 0x5),
1297ed0d50c3Schristos   BRANCH (O (O_BCS, SB), "blo", 0x5),
1298ed0d50c3Schristos   BRANCH (O (O_BNE, SB), "bne", 0x6),
1299ed0d50c3Schristos   BRANCH (O (O_BEQ, SB), "beq", 0x7),
1300ed0d50c3Schristos   BRANCH (O (O_BVC, SB), "bvc", 0x8),
1301ed0d50c3Schristos   BRANCH (O (O_BVS, SB), "bvs", 0x9),
1302ed0d50c3Schristos   BRANCH (O (O_BPL, SB), "bpl", 0xA),
1303ed0d50c3Schristos   BRANCH (O (O_BMI, SB), "bmi", 0xB),
1304ed0d50c3Schristos   BRANCH (O (O_BGE, SB), "bge", 0xC),
1305ed0d50c3Schristos   BRANCH (O (O_BLT, SB), "blt", 0xD),
1306ed0d50c3Schristos   BRANCH (O (O_BGT, SB), "bgt", 0xE),
1307ed0d50c3Schristos   BRANCH (O (O_BLE, SB), "ble", 0xF),
1308ed0d50c3Schristos 
1309ed0d50c3Schristos   EBITOP (O (O_BCLR,  SB), IMM3 | B30, "bclr",  0x6, 0x2, 0x7, 0xD, 0x7, 0xF, 0x8, 0),
1310ed0d50c3Schristos   BITOP  (O (O_BAND,  SB), IMM3 | B30, "band",  0x7, 0x6, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1311ed0d50c3Schristos   BITOP  (O (O_BIAND, SB), IMM3 | B31, "biand", 0x7, 0x6, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1312ed0d50c3Schristos   BITOP  (O (O_BILD,  SB), IMM3 | B31, "bild",  0x7, 0x7, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1313ed0d50c3Schristos   BITOP  (O (O_BIOR,  SB), IMM3 | B31, "bior",  0x7, 0x4, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1314ed0d50c3Schristos   BITOP  (O (O_BIST,  SB), IMM3 | B31, "bist",  0x6, 0x7, 0x7, 0xD, 0x7, 0xF, 0x8, 0),
1315ed0d50c3Schristos   BITOP  (O (O_BIXOR, SB), IMM3 | B31, "bixor", 0x7, 0x5, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1316ed0d50c3Schristos   BITOP  (O (O_BLD,   SB), IMM3 | B30, "bld",   0x7, 0x7, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1317ed0d50c3Schristos   EBITOP (O (O_BNOT,  SB), IMM3 | B30, "bnot",  0x6, 0x1, 0x7, 0xD, 0x7, 0xF, 0x8, 0),
1318ed0d50c3Schristos   BITOP  (O (O_BOR,   SB), IMM3 | B30, "bor",   0x7, 0x4, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1319ed0d50c3Schristos   EBITOP (O (O_BSET,  SB), IMM3 | B30, "bset",  0x6, 0x0, 0x7, 0xD, 0x7, 0xF, 0x8, 0),
1320ed0d50c3Schristos   BITOP  (O (O_BST,   SB), IMM3 | B30, "bst",   0x6, 0x7, 0x7, 0xD, 0x7, 0xF, 0x8, 0),
1321ed0d50c3Schristos   EBITOP (O (O_BTST,  SB), IMM3 | B30, "btst",  0x6, 0x3, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1322ed0d50c3Schristos   BITOP  (O (O_BXOR,  SB), IMM3 | B30, "bxor",  0x7, 0x5, 0x7, 0xC, 0x7, 0xE, 0x0, 0),
1323ed0d50c3Schristos 
1324ed0d50c3Schristos   EBITOP_B (O (O_BCLREQ,  SB), IMM3 | B30, "bclr/eq",  0x6, 0x2, 0x7, 0xD, 0x7, 0xF, 0x8, 0x7),
1325ed0d50c3Schristos   EBITOP_B (O (O_BCLRNE,  SB), IMM3 | B30, "bclr/ne",  0x6, 0x2, 0x7, 0xD, 0x7, 0xF, 0x8, 0x6),
1326ed0d50c3Schristos   EBITOP_B (O (O_BSETEQ,  SB), IMM3 | B30, "bset/eq",  0x6, 0x0, 0x7, 0xD, 0x7, 0xF, 0x8, 0x7),
1327ed0d50c3Schristos   EBITOP_B (O (O_BSETNE,  SB), IMM3 | B30, "bset/ne",  0x6, 0x0, 0x7, 0xD, 0x7, 0xF, 0x8, 0x6),
1328ed0d50c3Schristos   BITOP_B  (O (O_BISTZ,   SB), IMM3 | B31, "bistz",    0x6, 0x7, 0x7, 0xD, 0x7, 0xF, 0x8, 0x7),
1329ed0d50c3Schristos   BITOP_B  (O (O_BSTZ,    SB), IMM3 | B30, "bstz",     0x6, 0x7, 0x7, 0xD, 0x7, 0xF, 0x8, 0x7),
1330ed0d50c3Schristos 
1331ed0d50c3Schristos   {O (O_BFLD, SB), AV_H8SX, 0, "bfld", {{IMM8, RDIND,    R3_8}},  {{0x7, 0xC,           B30 | RDIND, 0x0, 0xF, R3_8, IMM8LIST, E}}},
1332ed0d50c3Schristos   {O (O_BFLD, SB), AV_H8SX, 0, "bfld", {{IMM8, ABS8DST,  R3_8}},  {{0x7, 0xE,           DSTABS8LIST,      0xF, R3_8, IMM8LIST, E}}},
1333ed0d50c3Schristos   {O (O_BFLD, SB), AV_H8SX, 0, "bfld", {{IMM8, ABS16DST, R3_8}},  {{0x6, 0xA, 0x1, 0x0, DSTABS16LIST,     0xF, R3_8, IMM8LIST, E}}},
1334ed0d50c3Schristos   {O (O_BFLD, SB), AV_H8SX, 0, "bfld", {{IMM8, ABS32DST, R3_8}},  {{0x6, 0xA, 0x3, 0x0, DSTABS32LIST,     0xF, R3_8, IMM8LIST, E}}},
1335ed0d50c3Schristos 
1336ed0d50c3Schristos   /* Because the assembler treats SRC, DST and OP3 as ordinals,
1337ed0d50c3Schristos      I must designate the second argument, an immediate value, as DST.
1338ed0d50c3Schristos      May God have mercy on my soul.  */
1339ed0d50c3Schristos   {O (O_BFST, SB), AV_H8SX, 0, "bfst", {{RS8, DST | IMM8, R3_IND}},   {{0x7, 0xD,           B30 | R3_IND, 0x0, 0xF, RS8, DST | IMM8LIST, E}}},
1340ed0d50c3Schristos   {O (O_BFST, SB), AV_H8SX, 0, "bfst", {{RS8, DST | IMM8, ABS8OP3}},  {{0x7, 0xF,           OP3ABS8LIST,       0xF, RS8, DST | IMM8LIST, E}}},
1341ed0d50c3Schristos   {O (O_BFST, SB), AV_H8SX, 0, "bfst", {{RS8, DST | IMM8, ABS16OP3}}, {{0x6, 0xA, 0x1, 0x8, OP3ABS16LIST,      0xF, RS8, DST | IMM8LIST, E}}},
1342ed0d50c3Schristos   {O (O_BFST, SB), AV_H8SX, 0, "bfst", {{RS8, DST | IMM8, ABS32OP3}}, {{0x6, 0xA, 0x3, 0x8, OP3ABS32LIST,      0xF, RS8, DST | IMM8LIST, E}}},
1343ed0d50c3Schristos 
1344ed0d50c3Schristos   {O (O_BSR, SB), AV_H8,   6, "bsr", {{PCREL8,  E}}, {{0x5, 0x5,           PCREL8,  DATA,  E}}},
1345ed0d50c3Schristos   {O (O_BSR, SB), AV_H8,   6, "bsr", {{PCREL16, E}}, {{0x5, 0xC, 0x0, 0x0, PCREL16, DATA3, E}}},
1346ed0d50c3Schristos   {O (O_BSR, SB), AV_H8SX, 0, "bsr", {{LOWREG | L_8,    E}}, {{0x5, 0xd, B30 | LOWREG | L_8,  0x5, E}}},
1347ed0d50c3Schristos   {O (O_BSR, SW), AV_H8SX, 0, "bsr", {{LOWREG | L_16,   E}}, {{0x5, 0xd, B30 | LOWREG | L_16, 0x6, E}}},
1348ed0d50c3Schristos   {O (O_BSR, SL), AV_H8SX, 0, "bsr", {{OR32,   E}}, {{0x5, 0xd, B30 | OR32, 0x7, E}}},
1349ed0d50c3Schristos 
1350ed0d50c3Schristos   {O (O_CMP, SB), AV_H8,   2, "cmp.b", {{IMM8, RD8, E}}, {{0xa, RD8, IMM8LIST, E}}},
1351ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_CMP, SB), "cmp.b", 0xa, 0x1, 0xc, 0x2, B00),
1352ed0d50c3Schristos 
1353ed0d50c3Schristos   {O (O_CMP, SW), AV_H8,   2, "cmp.w", {{RS16,      RD16,     E}}, {{0x1, 0xd, RS16,         RD16,   E}}},
1354ed0d50c3Schristos   {O (O_CMP, SW), AV_H8SX, 0, "cmp.w", {{IMM3NZ_NS, RD16,     E}}, {{0x1, 0xf, B30 | IMM3NZ, RD16,   E}}},
1355ed0d50c3Schristos   {O (O_CMP, SW), AV_H8SX, 0, "cmp.w", {{IMM3NZ_NS, RDIND,    E}}, {{0x7, 0xd,      B31 | RDIND,  IGNORE,       0x1, 0xf, B30 | IMM3NZ, IGNORE, E}}},
1356ed0d50c3Schristos   {O (O_CMP, SW), AV_H8SX, 0, "cmp.w", {{IMM3NZ_NS, ABS16DST, E}}, {{0x6, 0xb, 0x1, B31 | IGNORE, DSTABS16LIST, 0x1, 0xf, B30 | IMM3NZ, IGNORE, E}}},
1357ed0d50c3Schristos   {O (O_CMP, SW), AV_H8SX, 0, "cmp.w", {{IMM3NZ_NS, ABS32DST, E}}, {{0x6, 0xb, 0x3, B31 | IGNORE, DSTABS32LIST, 0x1, 0xf, B30 | IMM3NZ, IGNORE, E}}},
1358ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_CMP, SW), "cmp.w", 0x1, 0xd, 0x2),
1359ed0d50c3Schristos 
1360ed0d50c3Schristos   {O (O_CMP, SL), AV_H8H,  6, "cmp.l", {{RS32,      RD32,     E}}, {{0x1, 0xf, B31 | RS32,   B30 | RD32, E}}},
1361ed0d50c3Schristos   {O (O_CMP, SL), AV_H8SX, 0, "cmp.l", {{IMM3NZ_NS, RD32,     E}}, {{0x1, 0xf, B31 | IMM3NZ, B31 | RD32, E}}},
1362ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_CMP, SL), "cmp.l", 0x2),
1363ed0d50c3Schristos 
1364ed0d50c3Schristos   UNOP (O (O_DAA, SB), "daa",   0x0, 0xF),
1365ed0d50c3Schristos   UNOP (O (O_DAS, SB), "das",   0x1, 0xF),
1366ed0d50c3Schristos   UNOP (O (O_DEC, SB), "dec.b", 0x1, 0xA),
1367ed0d50c3Schristos 
1368ed0d50c3Schristos   {O (O_DEC, SW), AV_H8H, 2, "dec.w", {{DBIT, RD16, E}}, {{0x1, 0xB, 0x5 | DBIT, RD16,       E}}},
1369ed0d50c3Schristos   {O (O_DEC, SL), AV_H8H, 2, "dec.l", {{DBIT, RD32, E}}, {{0x1, 0xB, 0x7 | DBIT, RD32 | B30, E}}},
1370ed0d50c3Schristos 
1371ed0d50c3Schristos   {O (O_DIVS, SW), AV_H8SX, 0, "divs.w", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xd, 0x6, 0x5, 0x1, IMM4, RD16, E}}},
1372ed0d50c3Schristos   {O (O_DIVS, SW), AV_H8SX, 0, "divs.w", {{RS16, RD16, E}}, {{0x0, 0x1, 0xd, 0x2, 0x5, 0x1, RS16, RD16, E}}},
1373ed0d50c3Schristos   {O (O_DIVS, SL), AV_H8SX, 0, "divs.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xd, 0x6, 0x5, 0x3, IMM4,       B30 | RD32, E}}},
1374ed0d50c3Schristos   {O (O_DIVS, SL), AV_H8SX, 0, "divs.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xd, 0x2, 0x5, 0x3, B30 | RS32, B30 | RD32, E}}},
1375ed0d50c3Schristos 
1376ed0d50c3Schristos   {O (O_DIVU, SW), AV_H8SX, 0, "divu.w", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xd, 0xe, 0x5, 0x1, IMM4, RD16, E}}},
1377ed0d50c3Schristos   {O (O_DIVU, SW), AV_H8SX, 0, "divu.w", {{RS16, RD16, E}}, {{0x0, 0x1, 0xd, 0xa, 0x5, 0x1, RS16, RD16, E}}},
1378ed0d50c3Schristos   {O (O_DIVU, SL), AV_H8SX, 0, "divu.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xd, 0xe, 0x5, 0x3, IMM4,       B30 | RD32, E}}},
1379ed0d50c3Schristos   {O (O_DIVU, SL), AV_H8SX, 0, "divu.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xd, 0xa, 0x5, 0x3, B30 | RS32, B30 | RD32, E}}},
1380ed0d50c3Schristos 
1381ed0d50c3Schristos   {O (O_DIVXS, SB), AV_H8SX, 0,  "divxs.b", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xD, 0x4, 0x5, 0x1, IMM4, RD16, E}}},
1382ed0d50c3Schristos   {O (O_DIVXS, SB), AV_H8H,  13, "divxs.b", {{RS8,  RD16, E}}, {{0x0, 0x1, 0xD, 0x0, 0x5, 0x1, RS8,  RD16, E}}},
1383ed0d50c3Schristos   {O (O_DIVXS, SW), AV_H8SX, 0,  "divxs.w", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xD, 0x4, 0x5, 0x3, IMM4, B30 | RD32, E}}},
1384ed0d50c3Schristos   {O (O_DIVXS, SW), AV_H8H,  21, "divxs.w", {{RS16, RD32, E}}, {{0x0, 0x1, 0xD, 0x0, 0x5, 0x3, RS16, B30 | RD32, E}}},
1385ed0d50c3Schristos 
1386ed0d50c3Schristos   {O (O_DIVXU, SB), AV_H8SX, 0,  "divxu.b", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xD, 0xC, 0x5, 0x1, IMM4, RD16, E}}},
1387ed0d50c3Schristos   {O (O_DIVXU, SB), AV_H8,   13, "divxu.b", {{RS8,  RD16, E}}, {{0x5, 0x1,                     RS8,  RD16, E}}},
1388ed0d50c3Schristos   {O (O_DIVXU, SW), AV_H8SX, 0,  "divxu.w", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xD, 0xC, 0x5, 0x3, IMM4, B30 | RD32, E}}},
1389ed0d50c3Schristos   {O (O_DIVXU, SW), AV_H8H,  21, "divxu.w", {{RS16, RD32, E}}, {{0x5, 0x3,                     RS16, B30 | RD32, E}}},
1390ed0d50c3Schristos 
1391ed0d50c3Schristos   {O (O_EEPMOV, SB), AV_H8,  4, "eepmov.b", {{E}}, {{0x7, 0xB, 0x5, 0xC, 0x5, 0x9, 0x8, 0xF, E}}},
1392ed0d50c3Schristos   {O (O_EEPMOV, SW), AV_H8H, 4, "eepmov.w", {{E}}, {{0x7, 0xB, 0xD, 0x4, 0x5, 0x9, 0x8, 0xF, E}}},
1393ed0d50c3Schristos 
1394ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_EXTS, SW), "exts.w",          PREFIX_015, 0x1, 0x7, 0xd),
1395ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_EXTS, SL), "exts.l",          PREFIX_010, 0x1, 0x7, 0xf),
1396*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_EXTS, SL), AV_H8SX, "exts.l", CONST_2, PREFIX_010, 0x1, 0x7, 0xe, 0),
1397ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_EXTU, SW), "extu.w",          PREFIX_015, 0x1, 0x7, 0x5),
1398ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_EXTU, SL), "extu.l",          PREFIX_010, 0x1, 0x7, 0x7),
1399*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_EXTU, SL), AV_H8SX, "extu.l", CONST_2, PREFIX_010, 0x1, 0x7, 0x6, 0),
1400ed0d50c3Schristos 
1401ed0d50c3Schristos   UNOP (O (O_INC, SB), "inc", 0x0, 0xA),
1402ed0d50c3Schristos 
1403ed0d50c3Schristos   {O (O_INC, SW), AV_H8H,  2, "inc.w", {{DBIT, RD16, E}},    {{0x0, 0xB, 0x5 | DBIT, RD16,       E}}},
1404ed0d50c3Schristos   {O (O_INC, SL), AV_H8H,  2, "inc.l", {{DBIT, RD32, E}},    {{0x0, 0xB, 0x7 | DBIT, RD32 | B30, E}}},
1405ed0d50c3Schristos 
1406ed0d50c3Schristos   {O (O_JMP, SN), AV_H8,   4, "jmp", {{RSIND, E}},         {{0x5, 0x9, B30 | RSIND, 0x0, E}}},
1407ed0d50c3Schristos   {O (O_JMP, SN), AV_H8,   6, "jmp", {{ABSJMP | L_24, E}}, {{0x5, 0xA, SRC | ABSJMP | L_24, DATA5, E}}},
1408ed0d50c3Schristos 
1409ed0d50c3Schristos   {O (O_JMP, SN), AV_H8SX, 0, "jmp", {{ABSJMP | L_32, E}}, {{0x5, 0x9, 0x0, 0x8, ABSJMP | L_32, DATA7, E}}},
1410ed0d50c3Schristos 
1411ed0d50c3Schristos   {O (O_JMP, SN), AV_H8,   8, "jmp", {{MEMIND, E}}, {{0x5, 0xB, SRC | MEMIND, DATA, E}}},
1412ed0d50c3Schristos   {O (O_JMP, SN), AV_H8SX, 0, "jmp", {{VECIND, E}}, {{0x5, 0x9, B31 | SRC | VECIND, DATA, E}}},
1413ed0d50c3Schristos 
1414ed0d50c3Schristos   {O (O_JSR, SN), AV_H8,   6, "jsr", {{RSIND, E}},         {{0x5, 0xD, B30 | RSIND, 0x0, E}}},
1415ed0d50c3Schristos   {O (O_JSR, SN), AV_H8,   8, "jsr", {{ABSJMP | L_24, E}}, {{0x5, 0xE, SRC | ABSJMP | L_24, DATA5, E}}},
1416ed0d50c3Schristos 
1417ed0d50c3Schristos   {O (O_JSR, SN), AV_H8SX, 0, "jsr", {{ABSJMP | L_32, E}}, {{0x5, 0xD, 0x0, 0x8, ABSJMP | L_32, DATA7, E}}},
1418ed0d50c3Schristos 
1419ed0d50c3Schristos   {O (O_JSR, SN), AV_H8,   8, "jsr", {{MEMIND, E}}, {{0x5, 0xF, SRC | MEMIND, DATA, E}}},
1420ed0d50c3Schristos   {O (O_JSR, SN), AV_H8SX, 8, "jsr", {{VECIND, E}}, {{0x5, 0xD, SRC | VECIND, DATA, E}}},
1421ed0d50c3Schristos 
1422ed0d50c3Schristos   {O (O_LDC, SB), AV_H8,   2, "ldc", {{IMM8,       CCR     | DST, E}}, {{                           0x0, 0x7, IMM8LIST, E}}},
1423ed0d50c3Schristos   {O (O_LDC, SB), AV_H8S,  2, "ldc", {{IMM8,       EXR     | DST, E}}, {{0x0, 0x1, 0x4,  EXR | DST, 0x0, 0x7, IMM8LIST, E}}},
1424ed0d50c3Schristos   {O (O_LDC, SB), AV_H8,   2, "ldc", {{RS8,        CCR     | DST, E}}, {{0x0, 0x3, B30 | CCR | DST, RS8, E}}},
1425ed0d50c3Schristos   {O (O_LDC, SB), AV_H8S,  2, "ldc", {{RS8,        EXR     | DST, E}}, {{0x0, 0x3, B30 | EXR | DST, RS8, E}}},
1426ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{RSIND,      CCR     | DST, E}}, {{PREFIXLDC, 0x6, 0x9, B30 | RSIND,     IGNORE, E}}},
1427ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{RSIND,      EXR     | DST, E}}, {{PREFIXLDC, 0x6, 0x9, B30 | RSIND,     IGNORE, E}}},
1428ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{RSPOSTINC,  CCR     | DST, E}}, {{PREFIXLDC, 0x6, 0xD, B30 | RSPOSTINC, IGNORE, E}}},
1429ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{RSPOSTINC,  EXR     | DST, E}}, {{PREFIXLDC, 0x6, 0xD, B30 | RSPOSTINC, IGNORE, E}}},
1430ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{DISP16SRC,  CCR     | DST, E}}, {{PREFIXLDC, 0x6, 0xF, B30 | DISPREG,                     IGNORE, SRC | DISP16LIST, E}}},
1431ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{DISP16SRC,  EXR     | DST, E}}, {{PREFIXLDC, 0x6, 0xF, B30 | DISPREG,                     IGNORE, SRC | DISP16LIST, E}}},
1432ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{DISP32SRC,  CCR     | DST, E}}, {{PREFIXLDC, 0x7, 0x8, B30 | DISPREG, 0x0, 0x6, 0xB, 0x2, IGNORE, SRC | DISP32LIST, E}}},
1433ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{DISP32SRC,  EXR     | DST, E}}, {{PREFIXLDC, 0x7, 0x8, B30 | DISPREG, 0x0, 0x6, 0xB, 0x2, IGNORE, SRC | DISP32LIST, E}}},
1434ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{ABS16SRC,   CCR     | DST, E}}, {{PREFIXLDC, 0x6, 0xB, 0x0, IGNORE, SRC | ABS16LIST, E}}},
1435ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{ABS16SRC,   EXR     | DST, E}}, {{PREFIXLDC, 0x6, 0xB, 0x0, IGNORE, SRC | ABS16LIST, E}}},
1436ed0d50c3Schristos   {O (O_LDC, SW), AV_H8H,  2, "ldc", {{ABS32SRC,   CCR     | DST, E}}, {{PREFIXLDC, 0x6, 0xB, 0x2, IGNORE, SRC | MEMRELAX | ABS32LIST, E}}},
1437ed0d50c3Schristos   {O (O_LDC, SW), AV_H8S,  2, "ldc", {{ABS32SRC,   EXR     | DST, E}}, {{PREFIXLDC, 0x6, 0xB, 0x2, IGNORE, SRC | MEMRELAX | ABS32LIST, E}}},
1438ed0d50c3Schristos 
1439ed0d50c3Schristos   {O (O_LDC, SL), AV_H8SX, 0, "ldc", {{RS32, B30 | VBR_SBR | DST, E}}, {{0x0, 0x3, B30 | VBR_SBR | DST, RS32, E}}},
1440ed0d50c3Schristos 
1441ed0d50c3Schristos 
1442ed0d50c3Schristos   {O (O_MOV, SB), AV_H8,   2, "mov.b", {{IMM8, RD8,      E}}, {{0xF, RD8,            IMM8LIST,     E}}},
1443ed0d50c3Schristos   {O (O_MOV, SB), AV_H8SX, 0, "mov.b", {{IMM4_NS, ABS16DST, E}}, {{0x6, 0xa, 0xd, IMM4, DSTABS16LIST, E}}},
1444ed0d50c3Schristos   {O (O_MOV, SB), AV_H8SX, 0, "mov.b", {{IMM4_NS, ABS32DST, E}}, {{0x6, 0xa, 0xf, IMM4, DSTABS32LIST, E}}},
1445ed0d50c3Schristos   MOVFROM_IMM8 (O (O_MOV, SB), PREFIX_017D, "mov.b", IMM8),
1446ed0d50c3Schristos 
1447ed0d50c3Schristos   {O (O_MOV, SB), AV_H8,   2,    "mov.b", {{RS8, RD8,     E}}, {{0x0, 0xC, RS8, RD8,    E}}},
1448ed0d50c3Schristos   MOVFROM_REG_BW (O (O_MOV, SB), "mov.b", RS8, PREFIX_017, 8, 10, 12, 14, MEMRELAX),
1449ed0d50c3Schristos   {O (O_MOV, SB), AV_H8,   4,    "mov.b", {{RS8, ABS8DST, E}}, {{0x3, RS8, DSTABS8LIST, E}}},
1450ed0d50c3Schristos   MOVTO_REG_BW (O (O_MOV, SB),   "mov.b", RD8, PREFIX_017, 8, 10, 12, 14, MEMRELAX),
1451ed0d50c3Schristos   {O (O_MOV, SB), AV_H8,   4,    "mov.b", {{ABS8SRC, RD8, E}}, {{0x2, RD8, ABS8LIST,    E}}},
1452ed0d50c3Schristos 
1453ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", RSIND,     FROM_IND),
1454ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", RSPOSTINC, FROM_POSTINC),
1455ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", RSPOSTDEC, FROM_POSTDEC),
1456ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", RSPREINC,  FROM_PREINC),
1457ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", RSPREDEC,  FROM_PREDEC),
1458ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SB), PREFIX_0178, "mov.b", DISP2SRC,  FROM_DISP2),
1459ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", DISP16SRC, FROM_DISP16,  DISP16LIST),
1460ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", DISP32SRC, FROM_DISP32,  DISP32LIST),
1461ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXB16,  FROM_DISP16B, DISP16LIST),
1462ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXW16,  FROM_DISP16W, DISP16LIST),
1463ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXL16,  FROM_DISP16L, DISP16LIST),
1464ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXB32,  FROM_DISP32B, DISP32LIST),
1465ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXW32,  FROM_DISP32W, DISP32LIST),
1466ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", INDEXL32,  FROM_DISP32L, DISP32LIST),
1467ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", ABS16SRC,  FROM_ABS16,   ABS16LIST),
1468ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SB), PREFIX_0178, "mov.b", ABS32SRC,  FROM_ABS32,   ABS32LIST),
1469ed0d50c3Schristos 
1470ed0d50c3Schristos   {O (O_MOV, SW), AV_H8SX, 0, "mov.w", {{IMM3NZ_NS, RD16, E}}, {{0x0, 0xf, B30 | IMM3NZ, RD16,   E}}},
1471ed0d50c3Schristos   {O (O_MOV, SW), AV_H8,   4, "mov.w", {{IMM16,     RD16, E}}, {{0x7, 0x9, 0x0, RD16, IMM16LIST, E}}},
1472ed0d50c3Schristos   {O (O_MOV, SW), AV_H8SX, 0, "mov.w", {{IMM4_NS,  ABS16DST, E}}, {{0x6, 0xb, 0xd, IMM4, DSTABS16LIST, E}}},
1473ed0d50c3Schristos   {O (O_MOV, SW), AV_H8SX, 0, "mov.w", {{IMM4_NS,  ABS32DST, E}}, {{0x6, 0xb, 0xf, IMM4, DSTABS32LIST, E}}},
1474ed0d50c3Schristos 
1475ed0d50c3Schristos   MOVFROM_IMM8 (O (O_MOV, SW), PREFIX_015D,   "mov.w", IMM8U_NS),
1476ed0d50c3Schristos   MOVFROM_IMM  (O (O_MOV, SW), PREFIX_7974,   "mov.w", IMM16, IMM16LIST),
1477ed0d50c3Schristos 
1478ed0d50c3Schristos   {O (O_MOV, SW), AV_H8,   2, "mov.w", {{RS16, RD16,      E}}, {{0x0, 0xD, RS16, RD16, E}}},
1479ed0d50c3Schristos   MOVFROM_REG_BW (O (O_MOV, SW), "mov.w", RS16, PREFIX_015, 9, 11, 13, 15, 0),
1480ed0d50c3Schristos   MOVTO_REG_BW   (O (O_MOV, SW), "mov.w", RD16, PREFIX_015, 9, 11, 13, 15, 0),
1481ed0d50c3Schristos 
1482ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", RSIND,     FROM_IND),
1483ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", RSPOSTINC, FROM_POSTINC),
1484ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", RSPOSTDEC, FROM_POSTDEC),
1485ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", RSPREINC,  FROM_PREINC),
1486ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", RSPREDEC,  FROM_PREDEC),
1487ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SW), PREFIX_0158, "mov.w", DISP2SRC,  FROM_DISP2),
1488ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", DISP16SRC, FROM_DISP16,  DISP16LIST),
1489ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", DISP32SRC, FROM_DISP32,  DISP32LIST),
1490ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXB16,  FROM_DISP16B, DISP16LIST),
1491ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXW16,  FROM_DISP16W, DISP16LIST),
1492ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXL16,  FROM_DISP16L, DISP16LIST),
1493ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXB32,  FROM_DISP32B, DISP32LIST),
1494ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXW32,  FROM_DISP32W, DISP32LIST),
1495ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", INDEXL32,  FROM_DISP32L, DISP32LIST),
1496ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", ABS16SRC,  FROM_ABS16,   ABS16LIST),
1497ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SW), PREFIX_0158, "mov.w", ABS32SRC,  FROM_ABS32,   ABS32LIST),
1498ed0d50c3Schristos 
1499ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{IMM3NZ_NS, RD32, E}}, {{0x0, 0xf, B31 | IMM3NZ, B31 | RD32, E}}},
1500ed0d50c3Schristos 
1501ed0d50c3Schristos   MOVFROM_IMM8 (O (O_MOV, SL), PREFIX_010D, "mov.l", IMM8U_NS),
1502ed0d50c3Schristos   MOVFROM_IMM  (O (O_MOV, SL), PREFIX_7A7C, "mov.l", IMM16U_NS, IMM16ULIST),
1503ed0d50c3Schristos 
1504ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{IMM16U_NS, RD32, E}}, {{0x7, 0xa, 0x0, B31 | RD32, IMM16ULIST, E}}},
1505ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  4, "mov.l", {{IMM32,     RD32, E}}, {{0x7, 0xa, 0x0, B30 | RD32, IMM32LIST,  E}}},
1506ed0d50c3Schristos 
1507ed0d50c3Schristos   MOVFROM_IMM (O (O_MOV, SL), PREFIX_7A74, "mov.l", IMM32, IMM32LIST),
1508ed0d50c3Schristos 
1509ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  2, "mov.l", {{RS32, RD32,      E}}, {{0x0, 0xf, B31 | RS32, B30 | RD32, E}}},
1510ed0d50c3Schristos 
1511ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, RDIND,     E}}, {{PREFIX_0100,                       0x6, 0x9, B31 | RDIND, B30 | RS32, E}}},
1512ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, RDPOSTINC, E}}, {{PREFIX_0103,                       0x6, 0xd, B31 | RDPOSTINC,   RS32, E}}},
1513ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, RDPOSTDEC, E}}, {{PREFIX_0101,                       0x6, 0xd, B31 | RDPOSTDEC,   RS32, E}}},
1514ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, RDPREINC,  E}}, {{PREFIX_0102,                       0x6, 0xd, B31 | RDPREINC,    RS32, E}}},
1515ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, RDPREDEC,  E}}, {{PREFIX_0100,                       0x6, 0xd, B31 | RDPREDEC,    RS32, E}}},
1516ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, DISP2DST,  E}}, {{PREFIX_010,  B30 | B20 | DISP2DST, 0x6, 0x9, B31 | DSTDISPREG,  RS32, E}}},
1517ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, DISP16DST, E}}, {{PREFIX_0100,                       0x6, 0xf, B31 | DSTDISPREG,  RS32, DSTDISP16LIST, E}}},
1518ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 6, "mov.l", {{RS32, DISP32DST, E}}, {{0x7, 0x8, B31 | DSTDISPREG, 0x0,   0x6, 0xb, 0xa,               RS32, DSTDISP32LIST, E}}},
1519ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, DISP32DST, E}}, {{PREFIX_0100,                       0x7, 0x8, B31 | DSTDISPREG, 0x0,   0x6, 0xb, 0xa,               RS32, MEMRELAX | DSTDISP32LIST, E}}},
1520ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, DISP32DST, E}}, {{PREFIX_0100,                       0x7, 0x8, DSTDISPREG, 0x0,   0x6, 0xb, 0xa,               RS32, MEMRELAX | DSTDISP32LIST, E}}},
1521ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXB16D, E}}, {{PREFIX_0101,                       0x6, 0xf, B31 | DSTDISPREG,  RS32, DSTDISP16LIST, E}}},
1522ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXW16D, E}}, {{PREFIX_0102,                       0x6, 0xf, B31 | DSTDISPREG,  RS32, DSTDISP16LIST, E}}},
1523ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXL16D, E}}, {{PREFIX_0103,                       0x6, 0xf, B31 | DSTDISPREG,  RS32, DSTDISP16LIST, E}}},
1524ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXB32D, E}}, {{0x7, 0x8, B31 | DSTDISPREG, 0x1,   0x6, 0xb, 0xa,               RS32, DSTDISP32LIST, E}}},
1525ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXW32D, E}}, {{0x7, 0x8, B31 | DSTDISPREG, 0x2,   0x6, 0xb, 0xa,               RS32, DSTDISP32LIST, E}}},
1526ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RS32, INDEXL32D, E}}, {{0x7, 0x8, B31 | DSTDISPREG, 0x3,   0x6, 0xb, 0xa,               RS32, DSTDISP32LIST, E}}},
1527ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, ABS16DST,  E}}, {{PREFIX_0100,                       0x6, 0xb, 0x8,            RS32, DSTABS16LIST,            E}}},
1528ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RS32, ABS32DST,  E}}, {{PREFIX_0100,                       0x6, 0xb, 0xa,            RS32, MEMRELAX | DSTABS32LIST, E}}},
1529ed0d50c3Schristos 
1530ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  4, "mov.l", {{RSIND,     RD32, E}}, {{PREFIX_0100,                       0x6, 0x9, B30 | RSIND,     RD32, E}}},
1531ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{RSPOSTINC, RD32, E}}, {{PREFIX_0100,                       0x6, 0xd, B30 | RSPOSTINC, RD32, E}}},
1532ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RSPOSTDEC, RD32, E}}, {{PREFIX_0102,                       0x6, 0xd, B30 | RSPOSTDEC, RD32, E}}},
1533ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RSPREINC,  RD32, E}}, {{PREFIX_0101,                       0x6, 0xd, B30 | RSPREINC,  RD32, E}}},
1534ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{RSPREDEC,  RD32, E}}, {{PREFIX_0103,                       0x6, 0xd, B30 | RSPREDEC,  RD32, E}}},
1535ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{DISP2SRC,  RD32, E}}, {{PREFIX_010,  B30 | B20 | DISP2SRC, 0x6, 0x9, B30 | DISPREG,   RD32, E}}},
1536ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{DISP16SRC, RD32, E}}, {{PREFIX_0100,                       0x6, 0xf, B30 | DISPREG,   RD32, SRC | DISP16LIST, E}}},
1537ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 6, "mov.l", {{DISP32SRC, RD32, E}}, {{0x7, 0x8, B31 | DISPREG, 0x0,      0x6, 0xb, 0x2,             RD32, SRC | DISP32LIST, E}}},
1538ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{DISP32SRC, RD32, E}}, {{PREFIX_0100,                       0x7, 0x8, B30 | DISPREG, 0x0, 0x6, 0xb, 0x2,             RD32, MEMRELAX | SRC | DISP32LIST, E}}},
1539ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXB16,  RD32, E}}, {{PREFIX_0101,                       0x6, 0xf, B30 | DISPREG,   RD32, SRC | DISP16LIST, E}}},
1540ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXW16,  RD32, E}}, {{PREFIX_0102,                       0x6, 0xf, B30 | DISPREG,   RD32, SRC | DISP16LIST, E}}},
1541ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXL16,  RD32, E}}, {{PREFIX_0103,                       0x6, 0xf, B30 | DISPREG,   RD32, SRC | DISP16LIST, E}}},
1542ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXB32,  RD32, E}}, {{0x7, 0x8, B31 | DISPREG, 0x1,      0x6, 0xb, 0x2,             RD32, SRC | DISP32LIST, E}}},
1543ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXW32,  RD32, E}}, {{0x7, 0x8, B31 | DISPREG, 0x2,      0x6, 0xb, 0x2,             RD32, SRC | DISP32LIST, E}}},
1544ed0d50c3Schristos   {O (O_MOV, SL), AV_H8SX, 0, "mov.l", {{INDEXL32,  RD32, E}}, {{0x7, 0x8, B31 | DISPREG, 0x3,      0x6, 0xb, 0x2,             RD32, SRC | DISP32LIST, E}}},
1545ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{ABS16SRC,  RD32, E}}, {{PREFIX_0100,                       0x6, 0xb, 0x0,             RD32, SRC | ABS16LIST,  E}}},
1546ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H,  6, "mov.l", {{ABS32SRC,  RD32, E}}, {{PREFIX_0100,                       0x6, 0xb, 0x2,             RD32, SRC | MEMRELAX | ABS32LIST, E}}},
1547ed0d50c3Schristos 
1548ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", RSIND,     FROM_IND),
1549ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", RSPOSTINC, FROM_POSTINC),
1550ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", RSPOSTDEC, FROM_POSTDEC),
1551ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", RSPREINC,  FROM_PREINC),
1552ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", RSPREDEC,  FROM_PREDEC),
1553ed0d50c3Schristos   MOVFROM_STD (O (O_MOV, SL), PREFIX_0108, "mov.l", DISP2SRC,  FROM_DISP2),
1554ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", DISP16SRC, FROM_DISP16,  DISP16LIST),
1555ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", DISP32SRC, FROM_DISP32,  DISP32LIST),
1556ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXB16,  FROM_DISP16B, DISP16LIST),
1557ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXW16,  FROM_DISP16W, DISP16LIST),
1558ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXL16,  FROM_DISP16L, DISP16LIST),
1559ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXB32,  FROM_DISP32B, DISP32LIST),
1560ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXW32,  FROM_DISP32W, DISP32LIST),
1561ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", INDEXL32,  FROM_DISP32L, DISP32LIST),
1562ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", ABS16SRC,  FROM_ABS16,   ABS16LIST),
1563ed0d50c3Schristos   MOVFROM_AD  (O (O_MOV, SL), PREFIX_0108, "mov.l", ABS32SRC,  FROM_ABS32,   ABS32LIST),
1564ed0d50c3Schristos 
1565ed0d50c3Schristos #define DO_MOVA1(TYPE, OP0, OP1) \
1566ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0x8, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1567ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0x9, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1568ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xA, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1569ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xB, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1570ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xC, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1571ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xD, B30 | R3_32, MEMRELAX | DISP16LIST, E}}}, \
1572ed0d50c3Schristos \
1573ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0x8, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}, \
1574ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0x9, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}, \
1575ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xA, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}, \
1576ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xB, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}, \
1577ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xC, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}, \
1578ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xD, B31 | R3_32, MEMRELAX | DISP32LIST, E}}}
1579ed0d50c3Schristos 
1580ed0d50c3Schristos #define DO_MOVA2(TYPE, OP0, OP1, OP2) \
1581ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0x8, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1582ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0x9, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1583ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xA, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1584ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xB, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1585ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB16, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xC, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1586ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW16, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xD, B30 | R3_32, OP2, MEMRELAX | DISP16LIST, E}}}, \
1587ed0d50c3Schristos \
1588ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0x8, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}, \
1589ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0x9, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}, \
1590ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xA, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}, \
1591ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xB, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}, \
1592ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB32, TYPE, R3_32}}, {{PREFIX_017F, OP0, OP1, 0xC, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}, \
1593ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW32, TYPE, R3_32}}, {{PREFIX_015F, OP0, OP1, 0xD, B31 | R3_32, OP2, MEMRELAX | DISP32LIST, E}}}
1594ed0d50c3Schristos 
1595ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB16, E}}, {{0x7, 0xA, 0x8, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1596ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW16, E}}, {{0x7, 0xA, 0x9, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1597ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB16, E}}, {{0x7, 0xA, 0xA, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1598ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW16, E}}, {{0x7, 0xA, 0xB, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1599ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB16, E}}, {{0x7, 0xA, 0xC, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1600ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW16, E}}, {{0x7, 0xA, 0xD, B31 | DISPREG, MEMRELAX | DISP16LIST, E}}},
1601ed0d50c3Schristos 
1602ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB32, E}}, {{0x7, 0xA, 0x8, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1603ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW32, E}}, {{0x7, 0xA, 0x9, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1604ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB32, E}}, {{0x7, 0xA, 0xA, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1605ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW32, E}}, {{0x7, 0xA, 0xB, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1606ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB32, E}}, {{0x7, 0xA, 0xC, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1607ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW32, E}}, {{0x7, 0xA, 0xD, B30 | DISPREG, MEMRELAX | DISP32LIST, E}}},
1608ed0d50c3Schristos 
1609ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB16, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0x8, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1610ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW16, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0x9, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1611ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB16, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0xA, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1612ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW16, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0xB, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1613ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB16, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0xC, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1614ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW16, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0xD, B31 | R3_32, MEMRELAX | DISP16LIST, E}}},
1615ed0d50c3Schristos 
1616ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXB32, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0x8, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1617ed0d50c3Schristos   {O (O_MOVAB, SL), AV_H8SX, 0, "mova/b.l", {{INDEXW32, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0x9, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1618ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXB32, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0xA, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1619ed0d50c3Schristos   {O (O_MOVAW, SL), AV_H8SX, 0, "mova/w.l", {{INDEXW32, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0xB, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1620ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXB32, RD8,  R3_32}}, {{0x7, 0x8, RD8,  0x8, 0x7, 0xA, 0xC, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1621ed0d50c3Schristos   {O (O_MOVAL, SL), AV_H8SX, 0, "mova/l.l", {{INDEXW32, RD16, R3_32}}, {{0x7, 0x8, RD16, 0x9, 0x7, 0xA, 0xD, B30 | R3_32, MEMRELAX | DISP32LIST, E}}},
1622ed0d50c3Schristos 
1623ed0d50c3Schristos   DO_MOVA1 (RDIND,     0x0, B30 | RDIND),
1624ed0d50c3Schristos   DO_MOVA1 (RDPOSTINC, 0x8, B30 | RDPOSTINC),
1625ed0d50c3Schristos   DO_MOVA1 (RDPOSTDEC, 0xA, B30 | RDPOSTDEC),
1626ed0d50c3Schristos   DO_MOVA1 (RDPREINC,  0x9, B30 | RDPREINC),
1627ed0d50c3Schristos   DO_MOVA1 (RDPREDEC,  0xB, B30 | RDPREDEC),
1628ed0d50c3Schristos   DO_MOVA1 (DISP2DST,  B30 | B20 | DISP2DST,  B30 | DSTDISPREG),
1629ed0d50c3Schristos   DO_MOVA2 (DISP16DST, 0xC, B30 | DSTDISPREG, MEMRELAX | DSTDISP16LIST),
1630ed0d50c3Schristos   DO_MOVA2 (DISP32DST, 0xC, B31 | DSTDISPREG, MEMRELAX | DSTDISP32LIST),
1631ed0d50c3Schristos   DO_MOVA2 (INDEXB16D, 0xD, B30 | DSTDISPREG, MEMRELAX | DSTDISP16LIST),
1632ed0d50c3Schristos   DO_MOVA2 (INDEXW16D, 0xE, B30 | DSTDISPREG, MEMRELAX | DSTDISP16LIST),
1633ed0d50c3Schristos   DO_MOVA2 (INDEXL16D, 0xF, B30 | DSTDISPREG, MEMRELAX | DSTDISP16LIST),
1634ed0d50c3Schristos   DO_MOVA2 (INDEXB32D, 0xD, B31 | DSTDISPREG, MEMRELAX | DSTDISP32LIST),
1635ed0d50c3Schristos   DO_MOVA2 (INDEXW32D, 0xE, B31 | DSTDISPREG, MEMRELAX | DSTDISP32LIST),
1636ed0d50c3Schristos   DO_MOVA2 (INDEXL32D, 0xF, B31 | DSTDISPREG, MEMRELAX | DSTDISP32LIST),
1637ed0d50c3Schristos   DO_MOVA2 (ABS16DST,  0x4, 0x0,              MEMRELAX | DSTABS16LIST),
1638ed0d50c3Schristos   DO_MOVA2 (ABS32DST,  0x4, 0x8,              MEMRELAX | DSTABS32LIST),
1639ed0d50c3Schristos 
1640ed0d50c3Schristos   {O (O_MOV, SB), AV_H8, 10, "movfpe", {{ABS16SRC, RD8, E}}, {{0x6, 0xA, 0x4, RD8, ABS16SRC, DATA3, E}}},
1641ed0d50c3Schristos   {O (O_MOV, SB), AV_H8, 10, "movtpe", {{RS8, ABS16DST, E}}, {{0x6, 0xA, 0xC, RS8, ABS16DST, DATA3, E}}},
1642ed0d50c3Schristos 
1643ed0d50c3Schristos   {O (O_MOVMD, SB), AV_H8SX, 0, "movmd.b", {{E}},         {{0x7, 0xb, 0x9, 0x4, E}}},
1644ed0d50c3Schristos   {O (O_MOVMD, SW), AV_H8SX, 0, "movmd.w", {{E}},         {{0x7, 0xb, 0xa, 0x4, E}}},
1645ed0d50c3Schristos   {O (O_MOVMD, SL), AV_H8SX, 0, "movmd.l", {{E}},         {{0x7, 0xb, 0xb, 0x4, E}}},
1646ed0d50c3Schristos   {O (O_MOVSD, SB), AV_H8SX, 0, "movsd.b", {{PCREL16, E}}, {{0x7, 0xb, 0x8, 0x4, PCREL16, DATA3, E}}},
1647ed0d50c3Schristos 
1648ed0d50c3Schristos   {O (O_MULS, SW), AV_H8SX, 0, "muls.w", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xc, 0x6, 0x5, 0x0, IMM4, RD16, E}}},
1649ed0d50c3Schristos   {O (O_MULS, SW), AV_H8SX, 0, "muls.w", {{RS16, RD16, E}}, {{0x0, 0x1, 0xc, 0x2, 0x5, 0x0, RS16, RD16, E}}},
1650ed0d50c3Schristos   {O (O_MULS, SL), AV_H8SX, 0, "muls.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0x6, 0x5, 0x2, IMM4,       B30 | RD32, E}}},
1651ed0d50c3Schristos   {O (O_MULS, SL), AV_H8SX, 0, "muls.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xc, 0x2, 0x5, 0x2, B30 | RS32, B30 | RD32, E}}},
1652ed0d50c3Schristos 
1653ed0d50c3Schristos   {O (O_MULU, SW), AV_H8SX, 0, "mulu.w", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xc, 0xe, 0x5, 0x0, IMM4, RD16, E}}},
1654ed0d50c3Schristos   {O (O_MULU, SW), AV_H8SX, 0, "mulu.w", {{RS16, RD16, E}}, {{0x0, 0x1, 0xc, 0xa, 0x5, 0x0, RS16, RD16, E}}},
1655ed0d50c3Schristos   {O (O_MULU, SL), AV_H8SX, 0, "mulu.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0xe, 0x5, 0x2, IMM4,       B30 | RD32, E}}},
1656ed0d50c3Schristos   {O (O_MULU, SL), AV_H8SX, 0, "mulu.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xc, 0xa, 0x5, 0x2, B30 | RS32, B30 | RD32, E}}},
1657ed0d50c3Schristos 
1658ed0d50c3Schristos   {O (O_MULSU, SL), AV_H8SX, 0, "muls/u.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0x7, 0x5, 0x2, IMM4,       B30 | RD32, E}}},
1659ed0d50c3Schristos   {O (O_MULSU, SL), AV_H8SX, 0, "muls/u.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xc, 0x3, 0x5, 0x2, B30 | RS32, B30 | RD32, E}}},
1660ed0d50c3Schristos   {O (O_MULUU, SL), AV_H8SX, 0, "mulu/u.l", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0xf, 0x5, 0x2, IMM4,       B30 | RD32, E}}},
1661ed0d50c3Schristos   {O (O_MULUU, SL), AV_H8SX, 0, "mulu/u.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xc, 0xb, 0x5, 0x2, B30 | RS32, B30 | RD32, E}}},
1662ed0d50c3Schristos 
1663ed0d50c3Schristos   {O (O_MULXS, SB), AV_H8SX, 0,  "mulxs.b", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xc, 0x4, 0x5, 0x0, IMM4, RD16,       E}}},
1664ed0d50c3Schristos   {O (O_MULXS, SB), AV_H8H,  20, "mulxs.b", {{RS8,  RD16, E}}, {{0x0, 0x1, 0xc, 0x0, 0x5, 0x0, RS8,  RD16,       E}}},
1665ed0d50c3Schristos   {O (O_MULXS, SW), AV_H8SX, 0,  "mulxs.w", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0x4, 0x5, 0x2, IMM4, B30 | RD32, E}}},
1666ed0d50c3Schristos   {O (O_MULXS, SW), AV_H8H,  20, "mulxs.w", {{RS16, RD32, E}}, {{0x0, 0x1, 0xc, 0x0, 0x5, 0x2, RS16, B30 | RD32, E}}},
1667ed0d50c3Schristos 
1668ed0d50c3Schristos   {O (O_MULXU, SB), AV_H8SX, 0,  "mulxu.b", {{IMM4, RD16, E}}, {{0x0, 0x1, 0xc, 0xc, 0x5, 0x0, IMM4, RD16, E}}},
1669ed0d50c3Schristos   {O (O_MULXU, SB), AV_H8,   14, "mulxu.b", {{RS8,  RD16, E}}, {{0x5, 0x0,                     RS8,  RD16, E}}},
1670ed0d50c3Schristos   {O (O_MULXU, SW), AV_H8SX, 0,  "mulxu.w", {{IMM4, RD32, E}}, {{0x0, 0x1, 0xc, 0xc, 0x5, 0x2, IMM4, B30 | RD32, E}}},
1671ed0d50c3Schristos   {O (O_MULXU, SW), AV_H8H,  14, "mulxu.w", {{RS16, RD32, E}}, {{0x5, 0x2,                     RS16, B30 | RD32, E}}},
1672ed0d50c3Schristos 
1673ed0d50c3Schristos   EXPAND_UNOP_STD_B (O (O_NEG,  SB), "neg.b", PREFIX_017, 0x1, 0x7, 0x8),
1674ed0d50c3Schristos   EXPAND_UNOP_STD_W (O (O_NEG,  SW), "neg.w", PREFIX_015, 0x1, 0x7, 0x9),
1675ed0d50c3Schristos   EXPAND_UNOP_STD_L (O (O_NEG,  SL), "neg.l", PREFIX_010, 0x1, 0x7, 0xb),
1676ed0d50c3Schristos 
1677ed0d50c3Schristos   {O (O_NOP, SN), AV_H8,  2, "nop",   {{E}},  {{0x0, 0x0, 0x0, 0x0, E}}},
1678ed0d50c3Schristos 
1679ed0d50c3Schristos   EXPAND_UNOP_STD_B (O (O_NOT,  SB), "not.b", PREFIX_017, 0x1, 0x7, 0x0),
1680ed0d50c3Schristos   EXPAND_UNOP_STD_W (O (O_NOT,  SW), "not.w", PREFIX_015, 0x1, 0x7, 0x1),
1681ed0d50c3Schristos   EXPAND_UNOP_STD_L (O (O_NOT,  SL), "not.l", PREFIX_010, 0x1, 0x7, 0x3),
1682ed0d50c3Schristos 
1683ed0d50c3Schristos   {O (O_OR,  SB), AV_H8,  2, "or.b",  {{IMM8, RD8,  E}}, {{0xc, RD8, IMM8LIST, E}}},
1684ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_OR, SB), "or.b", 0xc, 0x1, 0x4, 0x4, 0),
1685ed0d50c3Schristos 
1686ed0d50c3Schristos   {O (O_OR,  SW), AV_H8,  2, "or.w",  {{RS16, RD16, E}}, {{0x6, 0x4, RS16, RD16, E}}},
1687ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_OR, SW), "or.w", 0x6, 0x4, 0x4),
1688ed0d50c3Schristos 
1689ed0d50c3Schristos   {O (O_OR,  SL), AV_H8H, 2, "or.l",  {{RS32, RD32, E}}, {{0x0, 0x1, 0xF, 0x0, 0x6, 0x4, B30 | RS32, B30 | RD32, E}}},
1690ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_OR, SL), "or.l", 0x4),
1691ed0d50c3Schristos 
1692ed0d50c3Schristos   {O (O_ORC, SB), AV_H8,  2, "orc", {{IMM8, CCR | DST, E}}, {{0x0, 0x4, IMM8LIST, E}}},
1693ed0d50c3Schristos   {O (O_ORC, SB), AV_H8S, 2, "orc", {{IMM8, EXR | DST, E}}, {{0x0, 0x1, 0x4, EXR | DST, 0x0, 0x4, IMM8LIST, E}}},
1694ed0d50c3Schristos 
1695ed0d50c3Schristos   {O (O_MOV, SW), AV_H8,  6, "pop.w",  {{OR16, E}}, {{0x6, 0xD, 0x7, OR16, E}}},
1696ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H, 6, "pop.l",  {{OR32, E}}, {{PREFIX_0100, 0x6, 0xD, 0x7, OR32 | B30, E}}},
1697ed0d50c3Schristos   {O (O_MOV, SW), AV_H8,  6, "push.w", {{OR16, E}}, {{0x6, 0xD, 0xF, OR16, E}}},
1698ed0d50c3Schristos   {O (O_MOV, SL), AV_H8H, 6, "push.l", {{OR32, E}}, {{PREFIX_0100, 0x6, 0xD, 0xF, OR32 | B30, E}}},
1699ed0d50c3Schristos 
1700ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_ROTL,  SB), "rotl.b",           PREFIX_017, 0x1, 0x2, 0x8),
1701*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_ROTL,  SB), AV_H8S, "rotl.b",  CONST_2, PREFIX_017, 0x1, 0x2, 0xc),
1702ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_ROTL,  SW), "rotl.w",           PREFIX_015, 0x1, 0x2, 0x9),
1703*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_ROTL,  SW), AV_H8S, "rotl.w",  CONST_2, PREFIX_015, 0x1, 0x2, 0xd),
1704ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_ROTL,  SL), "rotl.l",           PREFIX_010, 0x1, 0x2, 0xb),
1705*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_ROTL,  SL), AV_H8S, "rotl.l",  CONST_2, PREFIX_010, 0x1, 0x2, 0xf, B30),
1706ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_ROTR,  SB), "rotr.b",           PREFIX_017, 0x1, 0x3, 0x8),
1707*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_ROTR,  SB), AV_H8S, "rotr.b",  CONST_2, PREFIX_017, 0x1, 0x3, 0xc),
1708ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_ROTR,  SW), "rotr.w",           PREFIX_015, 0x1, 0x3, 0x9),
1709*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_ROTR,  SW), AV_H8S, "rotr.w",  CONST_2, PREFIX_015, 0x1, 0x3, 0xd),
1710ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_ROTR,  SL), "rotr.l",           PREFIX_010, 0x1, 0x3, 0xb),
1711*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_ROTR,  SL), AV_H8S, "rotr.l",  CONST_2, PREFIX_010, 0x1, 0x3, 0xf, B30),
1712ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_ROTXL, SB), "rotxl.b",          PREFIX_017, 0x1, 0x2, 0x0),
1713*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_ROTXL, SB), AV_H8S, "rotxl.b", CONST_2, PREFIX_017, 0x1, 0x2, 0x4),
1714ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_ROTXL, SW), "rotxl.w",          PREFIX_015, 0x1, 0x2, 0x1),
1715*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_ROTXL, SW), AV_H8S, "rotxl.w", CONST_2, PREFIX_015, 0x1, 0x2, 0x5),
1716ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_ROTXL, SL), "rotxl.l",          PREFIX_010, 0x1, 0x2, 0x3),
1717*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_ROTXL, SL), AV_H8S, "rotxl.l", CONST_2, PREFIX_010, 0x1, 0x2, 0x7, B30),
1718ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_ROTXR, SB), "rotxr.b",          PREFIX_017, 0x1, 0x3, 0x0),
1719*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_ROTXR, SB), AV_H8S, "rotxr.b", CONST_2, PREFIX_017, 0x1, 0x3, 0x4),
1720ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_ROTXR, SW), "rotxr.w",          PREFIX_015, 0x1, 0x3, 0x1),
1721*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_ROTXR, SW), AV_H8S, "rotxr.w", CONST_2, PREFIX_015, 0x1, 0x3, 0x5),
1722ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_ROTXR, SL), "rotxr.l",          PREFIX_010, 0x1, 0x3, 0x3),
1723*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_ROTXR, SL), AV_H8S, "rotxr.l", CONST_2, PREFIX_010, 0x1, 0x3, 0x7, B30),
1724ed0d50c3Schristos 
1725ed0d50c3Schristos 
1726ed0d50c3Schristos   {O (O_BPT,  SN), AV_H8,  10, "bpt",   {{E}}, {{0x7, 0xA, 0xF, 0xF, E}}},
1727ed0d50c3Schristos   {O (O_RTE,  SN), AV_H8,  10, "rte",   {{E}}, {{0x5, 0x6, 0x7, 0x0, E}}},
1728ed0d50c3Schristos   {O (O_RTS,  SN), AV_H8,   8, "rts",   {{E}}, {{0x5, 0x4, 0x7, 0x0, E}}},
1729ed0d50c3Schristos   {O (O_RTEL, SN), AV_H8SX, 0, "rte/l", {{RS32, RD32, E}}, {{0x5, 0x6, RS32 | B30, RD32 | B30, E}}},
1730ed0d50c3Schristos   {O (O_RTSL, SN), AV_H8SX, 0, "rts/l", {{RS32, RD32, E}}, {{0x5, 0x4, RS32 | B30, RD32 | B30, E}}},
1731ed0d50c3Schristos 
1732ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_SHAL, SB), "shal.b",          PREFIX_017, 0x1, 0x0, 0x8),
1733*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHAL, SB), AV_H8S, "shal.b", CONST_2, PREFIX_017, 0x1, 0x0, 0xc),
1734ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_SHAL, SW), "shal.w",          PREFIX_015, 0x1, 0x0, 0x9),
1735*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHAL, SW), AV_H8S, "shal.w", CONST_2, PREFIX_015, 0x1, 0x0, 0xd),
1736ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_SHAL, SL), "shal.l",          PREFIX_010, 0x1, 0x0, 0xb),
1737*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHAL, SL), AV_H8S, "shal.l", CONST_2, PREFIX_010, 0x1, 0x0, 0xf, B30),
1738ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_SHAR, SB), "shar.b",          PREFIX_017, 0x1, 0x1, 0x8),
1739*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHAR, SB), AV_H8S, "shar.b", CONST_2, PREFIX_017, 0x1, 0x1, 0xc),
1740ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_SHAR, SW), "shar.w",          PREFIX_015, 0x1, 0x1, 0x9),
1741*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHAR, SW), AV_H8S, "shar.w", CONST_2, PREFIX_015, 0x1, 0x1, 0xd),
1742ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_SHAR, SL), "shar.l",          PREFIX_010, 0x1, 0x1, 0xb),
1743*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHAR, SL), AV_H8S, "shar.l", CONST_2, PREFIX_010, 0x1, 0x1, 0xf, B30),
1744ed0d50c3Schristos 
1745ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_SHLL, SB), "shll.b",          PREFIX_017, 0x1, 0x0, 0x0),
1746ed0d50c3Schristos 
1747ed0d50c3Schristos   {O (O_SHLL, SB), AV_H8SX, 0, "shll.b", {{RS8,  RD8,  E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x0, 0x0, RD8,  E}}},
1748ed0d50c3Schristos 
1749*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHLL, SB), AV_H8S, "shll.b", CONST_2, PREFIX_017, 0x1, 0x0, 0x4),
1750*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHLL, SB), AV_H8SX, "shll.b", CONST_4, PREFIX_017, 0x1, 0x0, 0xa),
1751ed0d50c3Schristos   {O (O_SHLL, SB), AV_H8SX, 0, "shll.b", {{IMM5, RD8,  E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x0, 0x0, RD8,  E}}},
1752ed0d50c3Schristos 
1753ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_SHLL, SW), "shll.w",          PREFIX_015, 0x1, 0x0, 0x1),
1754ed0d50c3Schristos 
1755ed0d50c3Schristos   {O (O_SHLL, SW), AV_H8SX, 0, "shll.w", {{RS8,  RD16, E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x0, 0x1, RD16, E}}},
1756ed0d50c3Schristos 
1757*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLL, SW), AV_H8S, "shll.w", CONST_2, PREFIX_015, 0x1, 0x0, 0x5),
1758*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLL, SW), AV_H8SX, "shll.w", CONST_4, PREFIX_015, 0x1, 0x0, 0x2),
1759*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLL, SW), AV_H8SX, "shll.w", CONST_8, PREFIX_015, 0x1, 0x0, 0x6),
1760ed0d50c3Schristos   {O (O_SHLL, SW), AV_H8SX, 0, "shll.w", {{IMM5, RD16, E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x0, 0x1, RD16, E}}},
1761ed0d50c3Schristos 
1762ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_SHLL, SL), "shll.l",           PREFIX_010, 0x1, 0x0, 0x3),
1763ed0d50c3Schristos 
1764ed0d50c3Schristos   {O (O_SHLL, SL), AV_H8SX, 0, "shll.l", {{RS8,  RD32, E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x0, 0x3, B30 | RD32, E}}},
1765ed0d50c3Schristos 
1766*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLL, SL), AV_H8S, "shll.l", CONST_2,  PREFIX_010, 0x1, 0x0, 0x7, B30),
1767*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLL, SL), AV_H8SX, "shll.l", CONST_4,  PREFIX_010, 0x1, 0x0, 0x3, B31),
1768*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLL, SL), AV_H8SX, "shll.l", CONST_8,  PREFIX_010, 0x1, 0x0, 0x7, B31),
1769*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLL, SL), AV_H8SX, "shll.l", CONST_16, PREFIX_010, 0x1, 0x0, 0xf, B31),
1770ed0d50c3Schristos   {O (O_SHLL, SL), AV_H8SX, 0, "shll.l", {{IMM5, RD32, E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x0, 0x3, B30 | RD32, E}}},
1771ed0d50c3Schristos 
1772ed0d50c3Schristos   EXPAND_UNOP_STD_B      (O (O_SHLR, SB), "shlr.b",          PREFIX_017, 0x1, 0x1, 0x0),
1773ed0d50c3Schristos 
1774ed0d50c3Schristos   {O (O_SHLR, SB), AV_H8SX, 0, "shlr.b", {{RS8,  RD8,  E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x1, 0x0, RD8,  E}}},
1775ed0d50c3Schristos 
1776*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHLR, SB), AV_H8S, "shlr.b", CONST_2, PREFIX_017, 0x1, 0x1, 0x4),
1777*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_B (O (O_SHLR, SB), AV_H8SX, "shlr.b", CONST_4, PREFIX_017, 0x1, 0x1, 0xa),
1778ed0d50c3Schristos   {O (O_SHLR, SB), AV_H8SX, 0, "shlr.b", {{IMM5, RD8,  E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x1, 0x0, RD8,  E}}},
1779ed0d50c3Schristos 
1780ed0d50c3Schristos   EXPAND_UNOP_STD_W      (O (O_SHLR, SW), "shlr.w",          PREFIX_015, 0x1, 0x1, 0x1),
1781ed0d50c3Schristos 
1782ed0d50c3Schristos   {O (O_SHLR, SW), AV_H8SX, 0, "shlr.w", {{RS8,  RD16, E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x1, 0x1, RD16, E}}},
1783ed0d50c3Schristos 
1784*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLR, SW), AV_H8S, "shlr.w", CONST_2, PREFIX_015, 0x1, 0x1, 0x5),
1785*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLR, SW), AV_H8SX, "shlr.w", CONST_4, PREFIX_015, 0x1, 0x1, 0x2),
1786*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_W (O (O_SHLR, SW), AV_H8SX, "shlr.w", CONST_8, PREFIX_015, 0x1, 0x1, 0x6),
1787ed0d50c3Schristos   {O (O_SHLR, SW), AV_H8SX, 0, "shlr.w", {{IMM5, RD16, E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x1, 0x1, RD16, E}}},
1788ed0d50c3Schristos 
1789ed0d50c3Schristos   EXPAND_UNOP_STD_L      (O (O_SHLR, SL), "shlr.l",           PREFIX_010, 0x1, 0x1, 0x3),
1790ed0d50c3Schristos 
1791ed0d50c3Schristos   {O (O_SHLR, SL), AV_H8SX, 0, "shlr.l", {{RS8,  RD32, E}}, {{0x7, 0x8, RS8,        0x8,  0x1, 0x1, 0x3, B30 | RD32, E}}},
1792ed0d50c3Schristos 
1793*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLR, SL), AV_H8S, "shlr.l", CONST_2,  PREFIX_010, 0x1, 0x1, 0x7, B30),
1794*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLR, SL), AV_H8SX, "shlr.l", CONST_4,  PREFIX_010, 0x1, 0x1, 0x3, B31),
1795*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLR, SL), AV_H8SX, "shlr.l", CONST_8,  PREFIX_010, 0x1, 0x1, 0x7, B31),
1796*b88e3e88Schristos   EXPAND_UNOP_EXTENDED_L (O (O_SHLR, SL), AV_H8SX, "shlr.l", CONST_16, PREFIX_010, 0x1, 0x1, 0xf, B31),
1797ed0d50c3Schristos   {O (O_SHLR, SL), AV_H8SX, 0, "shlr.l", {{IMM5, RD32, E}}, {{0x0, 0x3, B31 | IMM5, DATA, 0x1, 0x1, 0x3, B30 | RD32, E}}},
1798ed0d50c3Schristos 
1799ed0d50c3Schristos   {O (O_SLEEP, SN), AV_H8, 2, "sleep", {{E}}, {{0x0, 0x1, 0x8, 0x0, E}}},
1800ed0d50c3Schristos 
1801ed0d50c3Schristos   {O (O_STC, SB), AV_H8,   2, "stc", {{CCR | SRC, RD8,            E}}, {{0x0, 0x2, B30 | CCR | SRC,           RD8,    E}}},
1802ed0d50c3Schristos   {O (O_STC, SB), AV_H8S,  2, "stc", {{EXR | SRC, RD8,            E}}, {{0x0, 0x2, B30 | EXR | SRC,           RD8,    E}}},
1803ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, RDIND,          E}}, {{PREFIXSTC, 0x6, 0x9, B31 | RDIND,    IGNORE, E}}},
1804ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, RDIND,          E}}, {{PREFIXSTC, 0x6, 0x9, B31 | RDIND,    IGNORE, E}}},
1805ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, RDPREDEC,       E}}, {{PREFIXSTC, 0x6, 0xD, B31 | RDPREDEC, IGNORE, E}}},
1806ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, RDPREDEC,       E}}, {{PREFIXSTC, 0x6, 0xD, B31 | RDPREDEC, IGNORE, E}}},
1807ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, DISP16DST,      E}}, {{PREFIXSTC, 0x6, 0xF, B31 | DSTDISPREG,                   IGNORE, DSTDISP16LIST, E}}},
1808ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, DISP16DST,      E}}, {{PREFIXSTC, 0x6, 0xF, B31 | DSTDISPREG,                   IGNORE, DSTDISP16LIST, E}}},
1809ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, DISP32DST,      E}}, {{PREFIXSTC, 0x7, 0x8, B30 | DSTDISPREG, 0, 0x6, 0xB, 0xA, IGNORE, DSTDISP32LIST, E}}},
1810ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, DISP32DST,      E}}, {{PREFIXSTC, 0x7, 0x8, B30 | DSTDISPREG, 0, 0x6, 0xB, 0xA, IGNORE, DSTDISP32LIST, E}}},
1811ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, ABS16DST,       E}}, {{PREFIXSTC, 0x6, 0xB, 0x8, IGNORE, DST | ABS16LIST, E}}},
1812ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, ABS16DST,       E}}, {{PREFIXSTC, 0x6, 0xB, 0x8, IGNORE, DST | ABS16LIST, E}}},
1813ed0d50c3Schristos   {O (O_STC, SW), AV_H8H,  2, "stc", {{CCR | SRC, ABS32DST,       E}}, {{PREFIXSTC, 0x6, 0xB, 0xA, IGNORE, DST | MEMRELAX | ABS32LIST, E}}},
1814ed0d50c3Schristos   {O (O_STC, SW), AV_H8S,  2, "stc", {{EXR | SRC, ABS32DST,       E}}, {{PREFIXSTC, 0x6, 0xB, 0xA, IGNORE, DST | MEMRELAX | ABS32LIST, E}}},
1815ed0d50c3Schristos   {O (O_STC, SL), AV_H8SX, 0, "stc", {{B30 | VBR_SBR | SRC, RD32, E}}, {{0x0, 0x2, B30 | VBR_SBR | SRC, RD32, E}}},
1816ed0d50c3Schristos 
1817ed0d50c3Schristos 
1818ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_SUB, SB), "sub.b", 0xa, 0x1, 0x8, 0x3, B01),
1819ed0d50c3Schristos 
1820ed0d50c3Schristos   {O (O_SUB, SW), AV_H8,   2, "sub.w", {{RS16,      RD16,     E}}, {{0x1, 0x9, RS16,         RD16,   E}}},
1821ed0d50c3Schristos   {O (O_SUB, SW), AV_H8SX, 0, "sub.w", {{IMM3NZ_NS, RD16,     E}}, {{0x1, 0xa, B30 | IMM3NZ, RD16,   E}}},
1822ed0d50c3Schristos   {O (O_SUB, SW), AV_H8SX, 0, "sub.w", {{IMM3NZ_NS, RDIND,    E}}, {{0x7, 0xd,      B31 | RDIND,  IGNORE,       0x1, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1823ed0d50c3Schristos   {O (O_SUB, SW), AV_H8SX, 0, "sub.w", {{IMM3NZ_NS, ABS16DST, E}}, {{0x6, 0xb, 0x1, B31 | IGNORE, DSTABS16LIST, 0x1, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1824ed0d50c3Schristos   {O (O_SUB, SW), AV_H8SX, 0, "sub.w", {{IMM3NZ_NS, ABS32DST, E}}, {{0x6, 0xb, 0x3, B31 | IGNORE, DSTABS32LIST, 0x1, 0xa, B30 | IMM3NZ, IGNORE, E}}},
1825ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_SUB, SW), "sub.w", 0x1, 0x9, 0x3),
1826ed0d50c3Schristos 
1827ed0d50c3Schristos   {O (O_SUB, SL), AV_H8H,  6, "sub.l", {{RS32,      RD32,     E}}, {{0x1, 0xa, B31 | RS32,   B30 | RD32, E}}},
1828ed0d50c3Schristos   {O (O_SUB, SL), AV_H8SX, 0, "sub.l", {{IMM3NZ_NS, RD32,     E}}, {{0x1, 0xa, B31 | IMM3NZ, B31 | RD32, E}}},
1829ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_SUB, SL), "sub.l", 0x3),
1830ed0d50c3Schristos 
1831ed0d50c3Schristos   {O (O_SUBS, SL), AV_H8, 2, "subs", {{KBIT, RDP, E}}, {{0x1, 0xB,KBIT, RDP, E}}},
1832ed0d50c3Schristos 
1833ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8,   2, "subx",   {{IMM8,      RD8,       E}}, {{0xb, RD8, IMM8LIST, E}}},
1834ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{IMM8,      RDIND,     E}}, {{0x7, 0xd, B30 | RDIND, IGNORE,                        0xb, IGNORE, IMM8LIST, E}}},
1835ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{IMM8,      RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RDPOSTDEC, B31 | IGNORE, 0xb, IGNORE, IMM8LIST, E}}},
1836ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8,   2, "subx",   {{RS8,       RD8,       E}}, {{0x1, 0xe, RS8,  RD8,    E}}},
1837ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RS8,       RDIND,     E}}, {{0x7, 0xd, B30 | RDIND, IGNORE,                              0x1, 0xe, RS8, IGNORE, E}}},
1838ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RS8,       RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RDPOSTDEC, B31       | IGNORE, 0x1, 0xe, RS8, IGNORE, E}}},
1839ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RSIND,     RD8,       E}}, {{0x7, 0xc, B30 | RSIND, IGNORE,                              0x1, 0xe, IGNORE, RD8, E}}},
1840ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RSPOSTDEC, RD8,       E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RSPOSTDEC, B30 | B20 | IGNORE, 0x1, 0xe, IGNORE, RD8, E}}},
1841ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RSIND,     RDIND,     E}}, {{PREFIX_0174, 0x6, 0x8, B30 | RSIND,     0xd, 0x0, RDIND,     0x3, IGNORE, E}}},
1842ed0d50c3Schristos   {O (O_SUBX, SB), AV_H8SX, 0, "subx.b", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0176, 0x6, 0xc, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x3, IGNORE, E}}},
1843ed0d50c3Schristos 
1844ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{IMM16,     RD16,      E}}, {{PREFIX_0151,                         0x7, 0x9, 0x3, RD16,   IMM16LIST, E}}},
1845ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{IMM16,     RDIND,     E}}, {{0x7, 0xd, B31 | RDIND, B01 | IGNORE, 0x7, 0x9, 0x3, IGNORE, IMM16LIST, E}}},
1846ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{IMM16,     RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x7, 0x9, 0x3, IGNORE, IMM16LIST, E}}},
1847ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RS16,      RD16,      E}}, {{PREFIX_0151, 0x1, 0x9, RS16,  RD16,    E}}},
1848ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RS16,      RDIND,     E}}, {{0x7, 0xd, B31 | RDIND, B01 | IGNORE, 0x1, 0x9, RS16, IGNORE, E}}},
1849ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RS16,      RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x1, 0x9, RS16, IGNORE, E}}},
1850ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RSIND,     RD16,      E}}, {{0x7, 0xc, B31 | RSIND, B01 | IGNORE, 0x1, 0x9, IGNORE, RD16, E}}},
1851ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RSPOSTDEC, RD16,      E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RSPOSTDEC, B30 | B20 | B01 | IGNORE, 0x1, 0x9, IGNORE, RD16, E}}},
1852ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RSIND,     RDIND,     E}}, {{PREFIX_0154, 0x6, 0x9, B30 | RSIND,     0xd, 0x0, RDIND,     0x3, IGNORE, E}}},
1853ed0d50c3Schristos   {O (O_SUBX, SW), AV_H8SX, 0, "subx.w", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0156, 0x6, 0xd, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x3, IGNORE, E}}},
1854ed0d50c3Schristos 
1855ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{IMM32,     RD32,      E}}, {{PREFIX_0101, 0x7, 0xa, 0x3,  RD32, IMM32LIST, E}}},
1856ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{IMM32,     RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RDIND,     B31 | B20 | B01 | IGNORE, 0x7, 0xa, 0x3, IGNORE, IMM32LIST, E}}},
1857ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{IMM32,     RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x7, 0xa, 0x3, IGNORE, IMM32LIST, E}}},
1858ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RS32,      RD32,      E}}, {{PREFIX_0101, 0x1, 0xa, B31 | RS32,  B30 | RD32,    E}}},
1859ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RS32,      RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RDIND,     B31 | B20 | B01 | IGNORE, 0x1, 0xa, B31 | RS32, B30 | IGNORE, E}}},
1860ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RS32,      RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RDPOSTDEC, B31 | B20 | B01 | IGNORE, 0x1, 0xa, B31 | RS32, B30 | IGNORE, E}}},
1861ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RSIND,     RD32,      E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RSIND,     B30 | B20 | B01 | IGNORE, 0x1, 0xa, B31 | IGNORE, B30 | RD32, E}}},
1862ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RSPOSTDEC, RD32,      E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RSPOSTDEC, B30 | B20 | B01 | IGNORE, 0x1, 0xa, B31 | IGNORE, B30 | RD32, E}}},
1863ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RSIND,     RDIND,     E}}, {{PREFIX_0104, 0x6, 0x9, B30 | RSIND,     0xd, 0x0, RDIND,     0x3, IGNORE, E}}},
1864ed0d50c3Schristos   {O (O_SUBX, SL), AV_H8SX, 0, "subx.l", {{RSPOSTDEC, RDPOSTDEC, E}}, {{PREFIX_0106, 0x6, 0xd, B30 | RSPOSTDEC, 0xd, 0xa, RDPOSTDEC, 0x3, IGNORE, E}}},
1865ed0d50c3Schristos 
1866ed0d50c3Schristos   {O (O_TRAPA, SB), AV_H8H, 2, "trapa", {{IMM2,  E}}, {{0x5, 0x7, IMM2, IGNORE, E}}},
1867*b88e3e88Schristos   {O (O_TAS,   SB), AV_H8S, 2, "tas",   {{RSIND, E}}, {{0x0, 0x1, 0xe, 0x0, 0x7, 0xb, B30 | RSIND, 0xc, E}}},
1868ed0d50c3Schristos 
1869ed0d50c3Schristos   {O (O_XOR,   SB), AV_H8,  2, "xor.b", {{IMM8, RD8,  E}}, {{0xd, RD8, IMM8LIST, E}}},
1870ed0d50c3Schristos   EXPAND_TWOOP_B (O (O_XOR, SB), "xor.b", 0xd, 0x1, 0x5, 0x5, 0),
1871ed0d50c3Schristos 
1872ed0d50c3Schristos   {O (O_XOR,   SW), AV_H8,  2, "xor.w", {{RS16, RD16, E}}, {{0x6, 0x5, RS16, RD16, E}}},
1873ed0d50c3Schristos   EXPAND_TWOOP_W (O (O_XOR, SW), "xor.w", 0x6, 0x5, 0x5),
1874ed0d50c3Schristos 
1875ed0d50c3Schristos   {O (O_XOR,   SL), AV_H8H, 2, "xor.l", {{RS32, RD32, E}}, {{0x0, 0x1, 0xF, 0x0, 0x6, 0x5, B30 | RS32, B30 | RD32, E}}},
1876ed0d50c3Schristos   EXPAND_TWOOP_L (O (O_XOR, SL), "xor.l", 0x5),
1877ed0d50c3Schristos 
1878ed0d50c3Schristos   {O (O_XORC, SB), AV_H8,  2, "xorc", {{IMM8, CCR | DST, E}}, {{0x0, 0x5, IMM8LIST, E}}},
1879ed0d50c3Schristos   {O (O_XORC, SB), AV_H8S, 2, "xorc", {{IMM8, EXR | DST, E}}, {{0x0, 0x1, 0x4, EXR | DST, 0x0, 0x5, IMM8LIST, E}}},
1880ed0d50c3Schristos 
1881ed0d50c3Schristos   {O (O_CLRMAC, SN), AV_H8S, 2, "clrmac", {{E}}, {{0x0, 0x1, 0xa, 0x0, E}}},
1882ed0d50c3Schristos   {O (O_MAC,    SW), AV_H8S, 2, "mac",    {{RSPOSTINC, RDPOSTINC, E}}, {{0x0, 0x1, 0x6, 0x0, 0x6, 0xd, B30 | RSPOSTINC, B30 | RDPOSTINC, E}}},
1883ed0d50c3Schristos   {O (O_LDMAC,  SL), AV_H8S, 2, "ldmac",  {{RS32, MD32, E}}, {{0x0, 0x3, MD32, RS32, E}}},
1884ed0d50c3Schristos   {O (O_STMAC,  SL), AV_H8S, 2, "stmac",  {{MS32, RD32, E}}, {{0x0, 0x2, MS32, RD32, E}}},
1885*b88e3e88Schristos   {O (O_LDM,    SL), AV_H8S, 6, "ldm.l",  {{RSPOSTINC, RD32, E}}, {{0x0, 0x1, DATA, 0x0, 0x6, 0xD, 0x7, B30 | RD32, E}}},
1886*b88e3e88Schristos   {O (O_STM,    SL), AV_H8S, 6, "stm.l",  {{RS32, RDPREDEC,  E}}, {{0x0, 0x1, DATA, 0x0, 0x6, 0xD, 0xF, B30 | RS32, E}}},
1887ed0d50c3Schristos   {0, 0, 0, NULL, {{0, 0, 0}}, {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}}
1888ed0d50c3Schristos };
1889ed0d50c3Schristos #else
1890ed0d50c3Schristos extern const struct h8_opcode h8_opcodes[];
1891ed0d50c3Schristos #endif
1892ed0d50c3Schristos 
1893