First Commit of my working state
[simh.git] / AltairZ80 / insnsa.c
1 /* This file auto-generated from insns.dat by insns.pl - don't edit it */
2
3 #include "nasm.h"
4 #include "insns.h"
5
6 static struct itemplate instrux_AAA[] = {
7 {I_AAA, 0, {0,0,0}, "\1\x37", IF_8086},
8 ITEMPLATE_END
9 };
10
11 static struct itemplate instrux_AAD[] = {
12 {I_AAD, 0, {0,0,0}, "\2\xD5\x0A", IF_8086},
13 {I_AAD, 1, {IMMEDIATE,0,0}, "\1\xD5\24", IF_8086|IF_SB},
14 ITEMPLATE_END
15 };
16
17 static struct itemplate instrux_AAM[] = {
18 {I_AAM, 0, {0,0,0}, "\2\xD4\x0A", IF_8086},
19 {I_AAM, 1, {IMMEDIATE,0,0}, "\1\xD4\24", IF_8086|IF_SB},
20 ITEMPLATE_END
21 };
22
23 static struct itemplate instrux_AAS[] = {
24 {I_AAS, 0, {0,0,0}, "\1\x3F", IF_8086},
25 ITEMPLATE_END
26 };
27
28 static struct itemplate instrux_ADC[] = {
29 {I_ADC, 2, {MEMORY,REG8,0}, "\300\1\x10\101", IF_8086|IF_SM},
30 {I_ADC, 2, {REG8,REG8,0}, "\1\x10\101", IF_8086},
31 {I_ADC, 2, {MEMORY,REG16,0}, "\320\300\1\x11\101", IF_8086|IF_SM},
32 {I_ADC, 2, {REG16,REG16,0}, "\320\1\x11\101", IF_8086},
33 {I_ADC, 2, {MEMORY,REG32,0}, "\321\300\1\x11\101", IF_386|IF_SM},
34 {I_ADC, 2, {REG32,REG32,0}, "\321\1\x11\101", IF_386},
35 {I_ADC, 2, {REG8,MEMORY,0}, "\301\1\x12\110", IF_8086|IF_SM},
36 {I_ADC, 2, {REG8,REG8,0}, "\1\x12\110", IF_8086},
37 {I_ADC, 2, {REG16,MEMORY,0}, "\320\301\1\x13\110", IF_8086|IF_SM},
38 {I_ADC, 2, {REG16,REG16,0}, "\320\1\x13\110", IF_8086},
39 {I_ADC, 2, {REG32,MEMORY,0}, "\321\301\1\x13\110", IF_386|IF_SM},
40 {I_ADC, 2, {REG32,REG32,0}, "\321\1\x13\110", IF_386},
41 {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\202\15", IF_8086},
42 {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\202\15", IF_386},
43 {I_ADC, 2, {REG_AL,IMMEDIATE,0}, "\1\x14\21", IF_8086|IF_SM},
44 {I_ADC, 2, {REG_AX,SBYTE,0}, "\320\1\x83\202\15", IF_8086|IF_SM},
45 {I_ADC, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x15\31", IF_8086|IF_SM},
46 {I_ADC, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\202\15", IF_386|IF_SM},
47 {I_ADC, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x15\41", IF_386|IF_SM},
48 {I_ADC, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
49 {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\202\131", IF_8086|IF_SM},
50 {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\202\141", IF_386|IF_SM},
51 {I_ADC, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
52 {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\202\131", IF_8086|IF_SM},
53 {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\202\141", IF_386|IF_SM},
54 ITEMPLATE_END
55 };
56
57 static struct itemplate instrux_ADD[] = {
58 {I_ADD, 2, {MEMORY,REG8,0}, "\300\17\101", IF_8086|IF_SM},
59 {I_ADD, 2, {REG8,REG8,0}, "\17\101", IF_8086},
60 {I_ADD, 2, {MEMORY,REG16,0}, "\320\300\1\x01\101", IF_8086|IF_SM},
61 {I_ADD, 2, {REG16,REG16,0}, "\320\1\x01\101", IF_8086},
62 {I_ADD, 2, {MEMORY,REG32,0}, "\321\300\1\x01\101", IF_386|IF_SM},
63 {I_ADD, 2, {REG32,REG32,0}, "\321\1\x01\101", IF_386},
64 {I_ADD, 2, {REG8,MEMORY,0}, "\301\1\x02\110", IF_8086|IF_SM},
65 {I_ADD, 2, {REG8,REG8,0}, "\1\x02\110", IF_8086},
66 {I_ADD, 2, {REG16,MEMORY,0}, "\320\301\1\x03\110", IF_8086|IF_SM},
67 {I_ADD, 2, {REG16,REG16,0}, "\320\1\x03\110", IF_8086},
68 {I_ADD, 2, {REG32,MEMORY,0}, "\321\301\1\x03\110", IF_386|IF_SM},
69 {I_ADD, 2, {REG32,REG32,0}, "\321\1\x03\110", IF_386},
70 {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\200\15", IF_8086},
71 {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\200\15", IF_386},
72 {I_ADD, 2, {REG_AL,IMMEDIATE,0}, "\1\x04\21", IF_8086|IF_SM},
73 {I_ADD, 2, {REG_AX,SBYTE,0}, "\320\1\x83\200\15", IF_8086|IF_SM},
74 {I_ADD, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x05\31", IF_8086|IF_SM},
75 {I_ADD, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\200\15", IF_386|IF_SM},
76 {I_ADD, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x05\41", IF_386|IF_SM},
77 {I_ADD, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
78 {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\200\131", IF_8086|IF_SM},
79 {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\200\141", IF_386|IF_SM},
80 {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
81 {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\200\131", IF_8086|IF_SM},
82 {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\200\141", IF_386|IF_SM},
83 ITEMPLATE_END
84 };
85
86 static struct itemplate instrux_ADDPD[] = {
87 {I_ADDPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\x58\110", IF_WILLAMETTE|IF_SSE2},
88 {I_ADDPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\x58\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
89 ITEMPLATE_END
90 };
91
92 static struct itemplate instrux_ADDPS[] = {
93 {I_ADDPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x58\110", IF_KATMAI|IF_SSE},
94 {I_ADDPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x58\110", IF_KATMAI|IF_SSE},
95 ITEMPLATE_END
96 };
97
98 static struct itemplate instrux_ADDSD[] = {
99 {I_ADDSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\x58\110", IF_WILLAMETTE|IF_SSE2},
100 {I_ADDSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\x58\110", IF_WILLAMETTE|IF_SSE2},
101 ITEMPLATE_END
102 };
103
104 static struct itemplate instrux_ADDSS[] = {
105 {I_ADDSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x58\110", IF_KATMAI|IF_SSE},
106 {I_ADDSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x58\110", IF_KATMAI|IF_SSE},
107 ITEMPLATE_END
108 };
109
110 static struct itemplate instrux_ADDSUBPD[] = {
111 {I_ADDSUBPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD0\110", IF_PRESCOTT|IF_SSE3|IF_SM},
112 {I_ADDSUBPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD0\110", IF_PRESCOTT|IF_SSE3},
113 ITEMPLATE_END
114 };
115
116 static struct itemplate instrux_ADDSUBPS[] = {
117 {I_ADDSUBPS, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\xD0\110", IF_PRESCOTT|IF_SSE3|IF_SM},
118 {I_ADDSUBPS, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\xD0\110", IF_PRESCOTT|IF_SSE3},
119 ITEMPLATE_END
120 };
121
122 static struct itemplate instrux_AND[] = {
123 {I_AND, 2, {MEMORY,REG8,0}, "\300\1\x20\101", IF_8086|IF_SM},
124 {I_AND, 2, {REG8,REG8,0}, "\1\x20\101", IF_8086},
125 {I_AND, 2, {MEMORY,REG16,0}, "\320\300\1\x21\101", IF_8086|IF_SM},
126 {I_AND, 2, {REG16,REG16,0}, "\320\1\x21\101", IF_8086},
127 {I_AND, 2, {MEMORY,REG32,0}, "\321\300\1\x21\101", IF_386|IF_SM},
128 {I_AND, 2, {REG32,REG32,0}, "\321\1\x21\101", IF_386},
129 {I_AND, 2, {REG8,MEMORY,0}, "\301\1\x22\110", IF_8086|IF_SM},
130 {I_AND, 2, {REG8,REG8,0}, "\1\x22\110", IF_8086},
131 {I_AND, 2, {REG16,MEMORY,0}, "\320\301\1\x23\110", IF_8086|IF_SM},
132 {I_AND, 2, {REG16,REG16,0}, "\320\1\x23\110", IF_8086},
133 {I_AND, 2, {REG32,MEMORY,0}, "\321\301\1\x23\110", IF_386|IF_SM},
134 {I_AND, 2, {REG32,REG32,0}, "\321\1\x23\110", IF_386},
135 {I_AND, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\204\15", IF_8086},
136 {I_AND, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\204\15", IF_386},
137 {I_AND, 2, {REG_AL,IMMEDIATE,0}, "\1\x24\21", IF_8086|IF_SM},
138 {I_AND, 2, {REG_AX,SBYTE,0}, "\320\1\x83\204\15", IF_8086|IF_SM},
139 {I_AND, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x25\31", IF_8086|IF_SM},
140 {I_AND, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\204\15", IF_386|IF_SM},
141 {I_AND, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x25\41", IF_386|IF_SM},
142 {I_AND, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
143 {I_AND, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\204\131", IF_8086|IF_SM},
144 {I_AND, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\204\141", IF_386|IF_SM},
145 {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
146 {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\204\131", IF_8086|IF_SM},
147 {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\204\141", IF_386|IF_SM},
148 ITEMPLATE_END
149 };
150
151 static struct itemplate instrux_ANDNPD[] = {
152 {I_ANDNPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\x55\110", IF_WILLAMETTE|IF_SSE2},
153 {I_ANDNPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\x55\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
154 ITEMPLATE_END
155 };
156
157 static struct itemplate instrux_ANDNPS[] = {
158 {I_ANDNPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x55\110", IF_KATMAI|IF_SSE},
159 {I_ANDNPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x55\110", IF_KATMAI|IF_SSE},
160 ITEMPLATE_END
161 };
162
163 static struct itemplate instrux_ANDPD[] = {
164 {I_ANDPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\x54\110", IF_WILLAMETTE|IF_SSE2},
165 {I_ANDPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\x54\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
166 ITEMPLATE_END
167 };
168
169 static struct itemplate instrux_ANDPS[] = {
170 {I_ANDPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x54\110", IF_KATMAI|IF_SSE},
171 {I_ANDPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x54\110", IF_KATMAI|IF_SSE},
172 ITEMPLATE_END
173 };
174
175 static struct itemplate instrux_ARPL[] = {
176 {I_ARPL, 2, {MEMORY,REG16,0}, "\300\1\x63\101", IF_286|IF_PROT|IF_SM},
177 {I_ARPL, 2, {REG16,REG16,0}, "\1\x63\101", IF_286|IF_PROT},
178 ITEMPLATE_END
179 };
180
181 static struct itemplate instrux_BOUND[] = {
182 {I_BOUND, 2, {REG16,MEMORY,0}, "\320\301\1\x62\110", IF_186},
183 {I_BOUND, 2, {REG32,MEMORY,0}, "\321\301\1\x62\110", IF_386},
184 ITEMPLATE_END
185 };
186
187 static struct itemplate instrux_BSF[] = {
188 {I_BSF, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBC\110", IF_386|IF_SM},
189 {I_BSF, 2, {REG16,REG16,0}, "\320\2\x0F\xBC\110", IF_386},
190 {I_BSF, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBC\110", IF_386|IF_SM},
191 {I_BSF, 2, {REG32,REG32,0}, "\321\2\x0F\xBC\110", IF_386},
192 ITEMPLATE_END
193 };
194
195 static struct itemplate instrux_BSR[] = {
196 {I_BSR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBD\110", IF_386|IF_SM},
197 {I_BSR, 2, {REG16,REG16,0}, "\320\2\x0F\xBD\110", IF_386},
198 {I_BSR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBD\110", IF_386|IF_SM},
199 {I_BSR, 2, {REG32,REG32,0}, "\321\2\x0F\xBD\110", IF_386},
200 ITEMPLATE_END
201 };
202
203 static struct itemplate instrux_BSWAP[] = {
204 {I_BSWAP, 1, {REG32,0,0}, "\321\1\x0F\10\xC8", IF_486},
205 ITEMPLATE_END
206 };
207
208 static struct itemplate instrux_BT[] = {
209 {I_BT, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA3\101", IF_386|IF_SM},
210 {I_BT, 2, {REG16,REG16,0}, "\320\2\x0F\xA3\101", IF_386},
211 {I_BT, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA3\101", IF_386|IF_SM},
212 {I_BT, 2, {REG32,REG32,0}, "\321\2\x0F\xA3\101", IF_386},
213 {I_BT, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\204\25", IF_386|IF_SB},
214 {I_BT, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\204\25", IF_386|IF_SB},
215 ITEMPLATE_END
216 };
217
218 static struct itemplate instrux_BTC[] = {
219 {I_BTC, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xBB\101", IF_386|IF_SM},
220 {I_BTC, 2, {REG16,REG16,0}, "\320\2\x0F\xBB\101", IF_386},
221 {I_BTC, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xBB\101", IF_386|IF_SM},
222 {I_BTC, 2, {REG32,REG32,0}, "\321\2\x0F\xBB\101", IF_386},
223 {I_BTC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\207\25", IF_386|IF_SB},
224 {I_BTC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\207\25", IF_386|IF_SB},
225 ITEMPLATE_END
226 };
227
228 static struct itemplate instrux_BTR[] = {
229 {I_BTR, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB3\101", IF_386|IF_SM},
230 {I_BTR, 2, {REG16,REG16,0}, "\320\2\x0F\xB3\101", IF_386},
231 {I_BTR, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB3\101", IF_386|IF_SM},
232 {I_BTR, 2, {REG32,REG32,0}, "\321\2\x0F\xB3\101", IF_386},
233 {I_BTR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\206\25", IF_386|IF_SB},
234 {I_BTR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\206\25", IF_386|IF_SB},
235 ITEMPLATE_END
236 };
237
238 static struct itemplate instrux_BTS[] = {
239 {I_BTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xAB\101", IF_386|IF_SM},
240 {I_BTS, 2, {REG16,REG16,0}, "\320\2\x0F\xAB\101", IF_386},
241 {I_BTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xAB\101", IF_386|IF_SM},
242 {I_BTS, 2, {REG32,REG32,0}, "\321\2\x0F\xAB\101", IF_386},
243 {I_BTS, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\205\25", IF_386|IF_SB},
244 {I_BTS, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\205\25", IF_386|IF_SB},
245 ITEMPLATE_END
246 };
247
248 static struct itemplate instrux_CALL[] = {
249 {I_CALL, 1, {IMMEDIATE,0,0}, "\322\1\xE8\64", IF_8086},
250 {I_CALL, 1, {IMMEDIATE|NEAR,0,0}, "\322\1\xE8\64", IF_8086},
251 {I_CALL, 1, {IMMEDIATE|FAR,0,0}, "\322\1\x9A\34\37", IF_8086},
252 {I_CALL, 1, {IMMEDIATE|BITS16,0,0}, "\320\1\xE8\64", IF_8086},
253 {I_CALL, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "\320\1\xE8\64", IF_8086},
254 {I_CALL, 1, {IMMEDIATE|BITS16|FAR,0,0}, "\320\1\x9A\34\37", IF_8086},
255 {I_CALL, 1, {IMMEDIATE|BITS32,0,0}, "\321\1\xE8\64", IF_386},
256 {I_CALL, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "\321\1\xE8\64", IF_386},
257 {I_CALL, 1, {IMMEDIATE|BITS32|FAR,0,0}, "\321\1\x9A\34\37", IF_386},
258 {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\x9A\35\30", IF_8086},
259 {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\x9A\31\30", IF_8086},
260 {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\x9A\31\30", IF_8086},
261 {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\x9A\41\30", IF_386},
262 {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\x9A\41\30", IF_386},
263 {I_CALL, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\203", IF_8086},
264 {I_CALL, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\203", IF_8086},
265 {I_CALL, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\203", IF_386},
266 {I_CALL, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\202", IF_8086},
267 {I_CALL, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\202", IF_8086},
268 {I_CALL, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\202", IF_386},
269 {I_CALL, 1, {REG16,0,0}, "\320\300\1\xFF\202", IF_8086},
270 {I_CALL, 1, {REG32,0,0}, "\321\300\1\xFF\202", IF_386},
271 {I_CALL, 1, {MEMORY,0,0}, "\322\300\1\xFF\202", IF_8086},
272 {I_CALL, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\202", IF_8086},
273 {I_CALL, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\202", IF_386},
274 ITEMPLATE_END
275 };
276
277 static struct itemplate instrux_CBW[] = {
278 {I_CBW, 0, {0,0,0}, "\320\1\x98", IF_8086},
279 ITEMPLATE_END
280 };
281
282 static struct itemplate instrux_CDQ[] = {
283 {I_CDQ, 0, {0,0,0}, "\321\1\x99", IF_386},
284 ITEMPLATE_END
285 };
286
287 static struct itemplate instrux_CLC[] = {
288 {I_CLC, 0, {0,0,0}, "\1\xF8", IF_8086},
289 ITEMPLATE_END
290 };
291
292 static struct itemplate instrux_CLD[] = {
293 {I_CLD, 0, {0,0,0}, "\1\xFC", IF_8086},
294 ITEMPLATE_END
295 };
296
297 static struct itemplate instrux_CLFLUSH[] = {
298 {I_CLFLUSH, 1, {MEMORY,0,0}, "\300\2\x0F\xAE\207", IF_WILLAMETTE|IF_SSE2},
299 ITEMPLATE_END
300 };
301
302 static struct itemplate instrux_CLI[] = {
303 {I_CLI, 0, {0,0,0}, "\1\xFA", IF_8086},
304 ITEMPLATE_END
305 };
306
307 static struct itemplate instrux_CLTS[] = {
308 {I_CLTS, 0, {0,0,0}, "\2\x0F\x06", IF_286|IF_PRIV},
309 ITEMPLATE_END
310 };
311
312 static struct itemplate instrux_CMC[] = {
313 {I_CMC, 0, {0,0,0}, "\1\xF5", IF_8086},
314 ITEMPLATE_END
315 };
316
317 static struct itemplate instrux_CMP[] = {
318 {I_CMP, 2, {MEMORY,REG8,0}, "\300\1\x38\101", IF_8086|IF_SM},
319 {I_CMP, 2, {REG8,REG8,0}, "\1\x38\101", IF_8086},
320 {I_CMP, 2, {MEMORY,REG16,0}, "\320\300\1\x39\101", IF_8086|IF_SM},
321 {I_CMP, 2, {REG16,REG16,0}, "\320\1\x39\101", IF_8086},
322 {I_CMP, 2, {MEMORY,REG32,0}, "\321\300\1\x39\101", IF_386|IF_SM},
323 {I_CMP, 2, {REG32,REG32,0}, "\321\1\x39\101", IF_386},
324 {I_CMP, 2, {REG8,MEMORY,0}, "\301\1\x3A\110", IF_8086|IF_SM},
325 {I_CMP, 2, {REG8,REG8,0}, "\1\x3A\110", IF_8086},
326 {I_CMP, 2, {REG16,MEMORY,0}, "\320\301\1\x3B\110", IF_8086|IF_SM},
327 {I_CMP, 2, {REG16,REG16,0}, "\320\1\x3B\110", IF_8086},
328 {I_CMP, 2, {REG32,MEMORY,0}, "\321\301\1\x3B\110", IF_386|IF_SM},
329 {I_CMP, 2, {REG32,REG32,0}, "\321\1\x3B\110", IF_386},
330 {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\207\15", IF_8086},
331 {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\207\15", IF_386},
332 {I_CMP, 2, {REG_AL,IMMEDIATE,0}, "\1\x3C\21", IF_8086|IF_SM},
333 {I_CMP, 2, {REG_AX,SBYTE,0}, "\320\1\x83\207\15", IF_8086|IF_SM},
334 {I_CMP, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x3D\31", IF_8086|IF_SM},
335 {I_CMP, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\207\15", IF_386|IF_SM},
336 {I_CMP, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x3D\41", IF_386|IF_SM},
337 {I_CMP, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
338 {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\207\131", IF_8086|IF_SM},
339 {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\207\141", IF_386|IF_SM},
340 {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
341 {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\207\131", IF_8086|IF_SM},
342 {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\207\141", IF_386|IF_SM},
343 ITEMPLATE_END
344 };
345
346 static struct itemplate instrux_CMPEQPD[] = {
347 {I_CMPEQPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x00", IF_WILLAMETTE|IF_SSE2|IF_SM},
348 {I_CMPEQPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x00", IF_WILLAMETTE|IF_SSE2},
349 ITEMPLATE_END
350 };
351
352 static struct itemplate instrux_CMPEQPS[] = {
353 {I_CMPEQPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x00", IF_KATMAI|IF_SSE},
354 {I_CMPEQPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x00", IF_KATMAI|IF_SSE},
355 ITEMPLATE_END
356 };
357
358 static struct itemplate instrux_CMPEQSD[] = {
359 {I_CMPEQSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x00", IF_WILLAMETTE|IF_SSE2},
360 {I_CMPEQSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x00", IF_WILLAMETTE|IF_SSE2},
361 ITEMPLATE_END
362 };
363
364 static struct itemplate instrux_CMPEQSS[] = {
365 {I_CMPEQSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x00", IF_KATMAI|IF_SSE},
366 {I_CMPEQSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x00", IF_KATMAI|IF_SSE},
367 ITEMPLATE_END
368 };
369
370 static struct itemplate instrux_CMPLEPD[] = {
371 {I_CMPLEPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x02", IF_WILLAMETTE|IF_SSE2|IF_SM},
372 {I_CMPLEPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x02", IF_WILLAMETTE|IF_SSE2},
373 ITEMPLATE_END
374 };
375
376 static struct itemplate instrux_CMPLEPS[] = {
377 {I_CMPLEPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x02", IF_KATMAI|IF_SSE},
378 {I_CMPLEPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x02", IF_KATMAI|IF_SSE},
379 ITEMPLATE_END
380 };
381
382 static struct itemplate instrux_CMPLESD[] = {
383 {I_CMPLESD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x02", IF_WILLAMETTE|IF_SSE2},
384 {I_CMPLESD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x02", IF_WILLAMETTE|IF_SSE2},
385 ITEMPLATE_END
386 };
387
388 static struct itemplate instrux_CMPLESS[] = {
389 {I_CMPLESS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x02", IF_KATMAI|IF_SSE},
390 {I_CMPLESS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x02", IF_KATMAI|IF_SSE},
391 ITEMPLATE_END
392 };
393
394 static struct itemplate instrux_CMPLTPD[] = {
395 {I_CMPLTPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x01", IF_WILLAMETTE|IF_SSE2|IF_SM},
396 {I_CMPLTPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x01", IF_WILLAMETTE|IF_SSE2},
397 ITEMPLATE_END
398 };
399
400 static struct itemplate instrux_CMPLTPS[] = {
401 {I_CMPLTPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x01", IF_KATMAI|IF_SSE},
402 {I_CMPLTPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x01", IF_KATMAI|IF_SSE},
403 ITEMPLATE_END
404 };
405
406 static struct itemplate instrux_CMPLTSD[] = {
407 {I_CMPLTSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x01", IF_WILLAMETTE|IF_SSE2},
408 {I_CMPLTSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x01", IF_WILLAMETTE|IF_SSE2},
409 ITEMPLATE_END
410 };
411
412 static struct itemplate instrux_CMPLTSS[] = {
413 {I_CMPLTSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x01", IF_KATMAI|IF_SSE},
414 {I_CMPLTSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x01", IF_KATMAI|IF_SSE},
415 ITEMPLATE_END
416 };
417
418 static struct itemplate instrux_CMPNEQPD[] = {
419 {I_CMPNEQPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x04", IF_WILLAMETTE|IF_SSE2|IF_SM},
420 {I_CMPNEQPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x04", IF_WILLAMETTE|IF_SSE2},
421 ITEMPLATE_END
422 };
423
424 static struct itemplate instrux_CMPNEQPS[] = {
425 {I_CMPNEQPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x04", IF_KATMAI|IF_SSE},
426 {I_CMPNEQPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x04", IF_KATMAI|IF_SSE},
427 ITEMPLATE_END
428 };
429
430 static struct itemplate instrux_CMPNEQSD[] = {
431 {I_CMPNEQSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x04", IF_WILLAMETTE|IF_SSE2},
432 {I_CMPNEQSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x04", IF_WILLAMETTE|IF_SSE2},
433 ITEMPLATE_END
434 };
435
436 static struct itemplate instrux_CMPNEQSS[] = {
437 {I_CMPNEQSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x04", IF_KATMAI|IF_SSE},
438 {I_CMPNEQSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x04", IF_KATMAI|IF_SSE},
439 ITEMPLATE_END
440 };
441
442 static struct itemplate instrux_CMPNLEPD[] = {
443 {I_CMPNLEPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x06", IF_WILLAMETTE|IF_SSE2|IF_SM},
444 {I_CMPNLEPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x06", IF_WILLAMETTE|IF_SSE2},
445 ITEMPLATE_END
446 };
447
448 static struct itemplate instrux_CMPNLEPS[] = {
449 {I_CMPNLEPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x06", IF_KATMAI|IF_SSE},
450 {I_CMPNLEPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x06", IF_KATMAI|IF_SSE},
451 ITEMPLATE_END
452 };
453
454 static struct itemplate instrux_CMPNLESD[] = {
455 {I_CMPNLESD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x06", IF_WILLAMETTE|IF_SSE2},
456 {I_CMPNLESD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x06", IF_WILLAMETTE|IF_SSE2},
457 ITEMPLATE_END
458 };
459
460 static struct itemplate instrux_CMPNLESS[] = {
461 {I_CMPNLESS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x06", IF_KATMAI|IF_SSE},
462 {I_CMPNLESS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x06", IF_KATMAI|IF_SSE},
463 ITEMPLATE_END
464 };
465
466 static struct itemplate instrux_CMPNLTPD[] = {
467 {I_CMPNLTPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x05", IF_WILLAMETTE|IF_SSE2|IF_SM},
468 {I_CMPNLTPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x05", IF_WILLAMETTE|IF_SSE2},
469 ITEMPLATE_END
470 };
471
472 static struct itemplate instrux_CMPNLTPS[] = {
473 {I_CMPNLTPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x05", IF_KATMAI|IF_SSE},
474 {I_CMPNLTPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x05", IF_KATMAI|IF_SSE},
475 ITEMPLATE_END
476 };
477
478 static struct itemplate instrux_CMPNLTSD[] = {
479 {I_CMPNLTSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x05", IF_WILLAMETTE|IF_SSE2},
480 {I_CMPNLTSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x05", IF_WILLAMETTE|IF_SSE2},
481 ITEMPLATE_END
482 };
483
484 static struct itemplate instrux_CMPNLTSS[] = {
485 {I_CMPNLTSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x05", IF_KATMAI|IF_SSE},
486 {I_CMPNLTSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x05", IF_KATMAI|IF_SSE},
487 ITEMPLATE_END
488 };
489
490 static struct itemplate instrux_CMPORDPD[] = {
491 {I_CMPORDPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x07", IF_WILLAMETTE|IF_SSE2|IF_SM},
492 {I_CMPORDPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x07", IF_WILLAMETTE|IF_SSE2},
493 ITEMPLATE_END
494 };
495
496 static struct itemplate instrux_CMPORDPS[] = {
497 {I_CMPORDPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x07", IF_KATMAI|IF_SSE},
498 {I_CMPORDPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x07", IF_KATMAI|IF_SSE},
499 ITEMPLATE_END
500 };
501
502 static struct itemplate instrux_CMPORDSD[] = {
503 {I_CMPORDSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x07", IF_WILLAMETTE|IF_SSE2},
504 {I_CMPORDSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x07", IF_WILLAMETTE|IF_SSE2},
505 ITEMPLATE_END
506 };
507
508 static struct itemplate instrux_CMPORDSS[] = {
509 {I_CMPORDSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x07", IF_KATMAI|IF_SSE},
510 {I_CMPORDSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x07", IF_KATMAI|IF_SSE},
511 ITEMPLATE_END
512 };
513
514 static struct itemplate instrux_CMPPD[] = {
515 {I_CMPPD, 3, {XMMREG,XMMREG,IMMEDIATE}, "\331\3\x66\x0F\xC2\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
516 {I_CMPPD, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\331\3\x66\x0F\xC2\110\26", IF_WILLAMETTE|IF_SSE2|IF_SM2|IF_SB|IF_AR2},
517 ITEMPLATE_END
518 };
519
520 static struct itemplate instrux_CMPPS[] = {
521 {I_CMPPS, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\331\2\x0F\xC2\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
522 {I_CMPPS, 3, {XMMREG,XMMREG,IMMEDIATE}, "\331\2\x0F\xC2\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
523 ITEMPLATE_END
524 };
525
526 static struct itemplate instrux_CMPSB[] = {
527 {I_CMPSB, 0, {0,0,0}, "\332\1\xA6", IF_8086},
528 ITEMPLATE_END
529 };
530
531 static struct itemplate instrux_CMPSD[] = {
532 {I_CMPSD, 0, {0,0,0}, "\332\321\1\xA7", IF_386},
533 {I_CMPSD, 3, {XMMREG,XMMREG,IMMEDIATE}, "\331\3\xF2\x0F\xC2\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
534 {I_CMPSD, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\331\3\xF2\x0F\xC2\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
535 ITEMPLATE_END
536 };
537
538 static struct itemplate instrux_CMPSS[] = {
539 {I_CMPSS, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\333\2\x0F\xC2\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
540 {I_CMPSS, 3, {XMMREG,XMMREG,IMMEDIATE}, "\333\2\x0F\xC2\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
541 ITEMPLATE_END
542 };
543
544 static struct itemplate instrux_CMPSW[] = {
545 {I_CMPSW, 0, {0,0,0}, "\332\320\1\xA7", IF_8086},
546 ITEMPLATE_END
547 };
548
549 static struct itemplate instrux_CMPUNORDPD[] = {
550 {I_CMPUNORDPD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\xC2\110\1\x03", IF_WILLAMETTE|IF_SSE2|IF_SM},
551 {I_CMPUNORDPD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\xC2\110\1\x03", IF_WILLAMETTE|IF_SSE2},
552 ITEMPLATE_END
553 };
554
555 static struct itemplate instrux_CMPUNORDPS[] = {
556 {I_CMPUNORDPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\xC2\110\1\x03", IF_KATMAI|IF_SSE},
557 {I_CMPUNORDPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\xC2\110\1\x03", IF_KATMAI|IF_SSE},
558 ITEMPLATE_END
559 };
560
561 static struct itemplate instrux_CMPUNORDSD[] = {
562 {I_CMPUNORDSD, 2, {XMMREG,MEMORY,0}, "\301\331\3\xF2\x0F\xC2\110\1\x03", IF_WILLAMETTE|IF_SSE2},
563 {I_CMPUNORDSD, 2, {XMMREG,XMMREG,0}, "\331\3\xF2\x0F\xC2\110\1\x03", IF_WILLAMETTE|IF_SSE2},
564 ITEMPLATE_END
565 };
566
567 static struct itemplate instrux_CMPUNORDSS[] = {
568 {I_CMPUNORDSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xC2\110\1\x03", IF_KATMAI|IF_SSE},
569 {I_CMPUNORDSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xC2\110\1\x03", IF_KATMAI|IF_SSE},
570 ITEMPLATE_END
571 };
572
573 static struct itemplate instrux_CMPXCHG[] = {
574 {I_CMPXCHG, 2, {MEMORY,REG8,0}, "\300\2\x0F\xB0\101", IF_PENT|IF_SM},
575 {I_CMPXCHG, 2, {REG8,REG8,0}, "\2\x0F\xB0\101", IF_PENT},
576 {I_CMPXCHG, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB1\101", IF_PENT|IF_SM},
577 {I_CMPXCHG, 2, {REG16,REG16,0}, "\320\2\x0F\xB1\101", IF_PENT},
578 {I_CMPXCHG, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB1\101", IF_PENT|IF_SM},
579 {I_CMPXCHG, 2, {REG32,REG32,0}, "\321\2\x0F\xB1\101", IF_PENT},
580 ITEMPLATE_END
581 };
582
583 static struct itemplate instrux_CMPXCHG486[] = {
584 {I_CMPXCHG486, 2, {MEMORY,REG8,0}, "\300\2\x0F\xA6\101", IF_486|IF_SM|IF_UNDOC},
585 {I_CMPXCHG486, 2, {REG8,REG8,0}, "\2\x0F\xA6\101", IF_486|IF_UNDOC},
586 {I_CMPXCHG486, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
587 {I_CMPXCHG486, 2, {REG16,REG16,0}, "\320\2\x0F\xA7\101", IF_486|IF_UNDOC},
588 {I_CMPXCHG486, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
589 {I_CMPXCHG486, 2, {REG32,REG32,0}, "\321\2\x0F\xA7\101", IF_486|IF_UNDOC},
590 ITEMPLATE_END
591 };
592
593 static struct itemplate instrux_CMPXCHG8B[] = {
594 {I_CMPXCHG8B, 1, {MEMORY,0,0}, "\300\2\x0F\xC7\201", IF_PENT},
595 ITEMPLATE_END
596 };
597
598 static struct itemplate instrux_COMISD[] = {
599 {I_COMISD, 2, {XMMREG,XMMREG,0}, "\331\3\x66\x0F\x2F\110", IF_WILLAMETTE|IF_SSE2},
600 {I_COMISD, 2, {XMMREG,MEMORY,0}, "\301\331\3\x66\x0F\x2F\110", IF_WILLAMETTE|IF_SSE2},
601 ITEMPLATE_END
602 };
603
604 static struct itemplate instrux_COMISS[] = {
605 {I_COMISS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x2F\110", IF_KATMAI|IF_SSE},
606 {I_COMISS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x2F\110", IF_KATMAI|IF_SSE},
607 ITEMPLATE_END
608 };
609
610 static struct itemplate instrux_CPUID[] = {
611 {I_CPUID, 0, {0,0,0}, "\2\x0F\xA2", IF_PENT},
612 ITEMPLATE_END
613 };
614
615 static struct itemplate instrux_CVTDQ2PD[] = {
616 {I_CVTDQ2PD, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2},
617 {I_CVTDQ2PD, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2},
618 ITEMPLATE_END
619 };
620
621 static struct itemplate instrux_CVTDQ2PS[] = {
622 {I_CVTDQ2PS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2},
623 {I_CVTDQ2PS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
624 ITEMPLATE_END
625 };
626
627 static struct itemplate instrux_CVTPD2DQ[] = {
628 {I_CVTPD2DQ, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2},
629 {I_CVTPD2DQ, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
630 ITEMPLATE_END
631 };
632
633 static struct itemplate instrux_CVTPD2PI[] = {
634 {I_CVTPD2PI, 2, {MMXREG,XMMREG,0}, "\3\x66\x0F\x2D\110", IF_WILLAMETTE|IF_SSE2},
635 {I_CVTPD2PI, 2, {MMXREG,MEMORY,0}, "\301\3\x66\x0F\x2D\110", IF_WILLAMETTE|IF_SSE2},
636 ITEMPLATE_END
637 };
638
639 static struct itemplate instrux_CVTPD2PS[] = {
640 {I_CVTPD2PS, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
641 {I_CVTPD2PS, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
642 ITEMPLATE_END
643 };
644
645 static struct itemplate instrux_CVTPI2PD[] = {
646 {I_CVTPI2PD, 2, {XMMREG,MMXREG,0}, "\3\x66\x0F\x2A\110", IF_WILLAMETTE|IF_SSE2},
647 {I_CVTPI2PD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x2A\110", IF_WILLAMETTE|IF_SSE2},
648 ITEMPLATE_END
649 };
650
651 static struct itemplate instrux_CVTPI2PS[] = {
652 {I_CVTPI2PS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x2A\110", IF_KATMAI|IF_SSE|IF_MMX},
653 {I_CVTPI2PS, 2, {XMMREG,MMXREG,0}, "\331\2\x0F\x2A\110", IF_KATMAI|IF_SSE|IF_MMX},
654 ITEMPLATE_END
655 };
656
657 static struct itemplate instrux_CVTPS2DQ[] = {
658 {I_CVTPS2DQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2},
659 {I_CVTPS2DQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
660 ITEMPLATE_END
661 };
662
663 static struct itemplate instrux_CVTPS2PD[] = {
664 {I_CVTPS2PD, 2, {XMMREG,XMMREG,0}, "\2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
665 {I_CVTPS2PD, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
666 ITEMPLATE_END
667 };
668
669 static struct itemplate instrux_CVTPS2PI[] = {
670 {I_CVTPS2PI, 2, {MMXREG,MEMORY,0}, "\301\331\2\x0F\x2D\110", IF_KATMAI|IF_SSE|IF_MMX},
671 {I_CVTPS2PI, 2, {MMXREG,XMMREG,0}, "\331\2\x0F\x2D\110", IF_KATMAI|IF_SSE|IF_MMX},
672 ITEMPLATE_END
673 };
674
675 static struct itemplate instrux_CVTSD2SI[] = {
676 {I_CVTSD2SI, 2, {REG32,XMMREG,0}, "\3\xF2\x0F\x2D\110", IF_WILLAMETTE|IF_SSE2},
677 {I_CVTSD2SI, 2, {REG32,MEMORY,0}, "\301\3\xF2\x0F\x2D\110", IF_WILLAMETTE|IF_SSE2},
678 ITEMPLATE_END
679 };
680
681 static struct itemplate instrux_CVTSD2SS[] = {
682 {I_CVTSD2SS, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
683 {I_CVTSD2SS, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
684 ITEMPLATE_END
685 };
686
687 static struct itemplate instrux_CVTSI2SD[] = {
688 {I_CVTSI2SD, 2, {XMMREG,REG32,0}, "\3\xF2\x0F\x2A\110", IF_WILLAMETTE|IF_SSE2},
689 {I_CVTSI2SD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x2A\110", IF_WILLAMETTE|IF_SSE2},
690 ITEMPLATE_END
691 };
692
693 static struct itemplate instrux_CVTSI2SS[] = {
694 {I_CVTSI2SS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x2A\110", IF_KATMAI|IF_SSE|IF_SD|IF_AR1},
695 {I_CVTSI2SS, 2, {XMMREG,REG32,0}, "\333\2\x0F\x2A\110", IF_KATMAI|IF_SSE},
696 ITEMPLATE_END
697 };
698
699 static struct itemplate instrux_CVTSS2SD[] = {
700 {I_CVTSS2SD, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
701 {I_CVTSS2SD, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5A\110", IF_WILLAMETTE|IF_SSE2},
702 ITEMPLATE_END
703 };
704
705 static struct itemplate instrux_CVTSS2SI[] = {
706 {I_CVTSS2SI, 2, {REG32,MEMORY,0}, "\301\333\2\x0F\x2D\110", IF_KATMAI|IF_SSE},
707 {I_CVTSS2SI, 2, {REG32,XMMREG,0}, "\333\2\x0F\x2D\110", IF_KATMAI|IF_SSE},
708 ITEMPLATE_END
709 };
710
711 static struct itemplate instrux_CVTTPD2DQ[] = {
712 {I_CVTTPD2DQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2},
713 {I_CVTTPD2DQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE6\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
714 ITEMPLATE_END
715 };
716
717 static struct itemplate instrux_CVTTPD2PI[] = {
718 {I_CVTTPD2PI, 2, {MMXREG,XMMREG,0}, "\3\x66\x0F\x2C\110", IF_WILLAMETTE|IF_SSE2},
719 {I_CVTTPD2PI, 2, {MMXREG,MEMORY,0}, "\301\3\x66\x0F\x2C\110", IF_WILLAMETTE|IF_SSE2},
720 ITEMPLATE_END
721 };
722
723 static struct itemplate instrux_CVTTPS2DQ[] = {
724 {I_CVTTPS2DQ, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2},
725 {I_CVTTPS2DQ, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5B\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
726 ITEMPLATE_END
727 };
728
729 static struct itemplate instrux_CVTTPS2PI[] = {
730 {I_CVTTPS2PI, 2, {MMXREG,MEMORY,0}, "\301\331\2\x0F\x2C\110", IF_KATMAI|IF_SSE|IF_MMX},
731 {I_CVTTPS2PI, 2, {MMXREG,XMMREG,0}, "\331\2\x0F\x2C\110", IF_KATMAI|IF_SSE|IF_MMX},
732 ITEMPLATE_END
733 };
734
735 static struct itemplate instrux_CVTTSD2SI[] = {
736 {I_CVTTSD2SI, 2, {REG32,XMMREG,0}, "\3\xF2\x0F\x2C\110", IF_WILLAMETTE|IF_SSE2},
737 {I_CVTTSD2SI, 2, {REG32,MEMORY,0}, "\301\3\xF2\x0F\x2C\110", IF_WILLAMETTE|IF_SSE2},
738 ITEMPLATE_END
739 };
740
741 static struct itemplate instrux_CVTTSS2SI[] = {
742 {I_CVTTSS2SI, 2, {REG32,MEMORY,0}, "\301\333\2\x0F\x2C\110", IF_KATMAI|IF_SSE},
743 {I_CVTTSS2SI, 2, {REG32,XMMREG,0}, "\333\2\x0F\x2C\110", IF_KATMAI|IF_SSE},
744 ITEMPLATE_END
745 };
746
747 static struct itemplate instrux_CWD[] = {
748 {I_CWD, 0, {0,0,0}, "\320\1\x99", IF_8086},
749 ITEMPLATE_END
750 };
751
752 static struct itemplate instrux_CWDE[] = {
753 {I_CWDE, 0, {0,0,0}, "\321\1\x98", IF_386},
754 ITEMPLATE_END
755 };
756
757 static struct itemplate instrux_DAA[] = {
758 {I_DAA, 0, {0,0,0}, "\1\x27", IF_8086},
759 ITEMPLATE_END
760 };
761
762 static struct itemplate instrux_DAS[] = {
763 {I_DAS, 0, {0,0,0}, "\1\x2F", IF_8086},
764 ITEMPLATE_END
765 };
766
767 static struct itemplate instrux_DB[] = {
768 ITEMPLATE_END
769 };
770
771 static struct itemplate instrux_DD[] = {
772 ITEMPLATE_END
773 };
774
775 static struct itemplate instrux_DEC[] = {
776 {I_DEC, 1, {REG16,0,0}, "\320\10\x48", IF_8086},
777 {I_DEC, 1, {REG32,0,0}, "\321\10\x48", IF_386},
778 {I_DEC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\201", IF_8086},
779 {I_DEC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\201", IF_8086},
780 {I_DEC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\201", IF_386},
781 ITEMPLATE_END
782 };
783
784 static struct itemplate instrux_DIV[] = {
785 {I_DIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\206", IF_8086},
786 {I_DIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\206", IF_8086},
787 {I_DIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\206", IF_386},
788 ITEMPLATE_END
789 };
790
791 static struct itemplate instrux_DIVPD[] = {
792 {I_DIVPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5E\110", IF_WILLAMETTE|IF_SSE2},
793 {I_DIVPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5E\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
794 ITEMPLATE_END
795 };
796
797 static struct itemplate instrux_DIVPS[] = {
798 {I_DIVPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x5E\110", IF_KATMAI|IF_SSE},
799 {I_DIVPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x5E\110", IF_KATMAI|IF_SSE},
800 ITEMPLATE_END
801 };
802
803 static struct itemplate instrux_DIVSD[] = {
804 {I_DIVSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x5E\110", IF_WILLAMETTE|IF_SSE2},
805 {I_DIVSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x5E\110", IF_WILLAMETTE|IF_SSE2},
806 ITEMPLATE_END
807 };
808
809 static struct itemplate instrux_DIVSS[] = {
810 {I_DIVSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5E\110", IF_KATMAI|IF_SSE},
811 {I_DIVSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5E\110", IF_KATMAI|IF_SSE},
812 ITEMPLATE_END
813 };
814
815 static struct itemplate instrux_DQ[] = {
816 ITEMPLATE_END
817 };
818
819 static struct itemplate instrux_DT[] = {
820 ITEMPLATE_END
821 };
822
823 static struct itemplate instrux_DW[] = {
824 ITEMPLATE_END
825 };
826
827 static struct itemplate instrux_EMMS[] = {
828 {I_EMMS, 0, {0,0,0}, "\2\x0F\x77", IF_PENT|IF_MMX},
829 ITEMPLATE_END
830 };
831
832 static struct itemplate instrux_ENTER[] = {
833 {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0}, "\1\xC8\30\25", IF_186},
834 ITEMPLATE_END
835 };
836
837 static struct itemplate instrux_EQU[] = {
838 {I_EQU, 1, {IMMEDIATE,0,0}, "\0", IF_8086},
839 {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\0", IF_8086},
840 ITEMPLATE_END
841 };
842
843 static struct itemplate instrux_F2XM1[] = {
844 {I_F2XM1, 0, {0,0,0}, "\2\xD9\xF0", IF_8086|IF_FPU},
845 ITEMPLATE_END
846 };
847
848 static struct itemplate instrux_FABS[] = {
849 {I_FABS, 0, {0,0,0}, "\2\xD9\xE1", IF_8086|IF_FPU},
850 ITEMPLATE_END
851 };
852
853 static struct itemplate instrux_FADD[] = {
854 {I_FADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\200", IF_8086|IF_FPU},
855 {I_FADD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\200", IF_8086|IF_FPU},
856 {I_FADD, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
857 {I_FADD, 1, {FPUREG,0,0}, "\1\xD8\10\xC0", IF_8086|IF_FPU},
858 {I_FADD, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
859 {I_FADD, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC0", IF_8086|IF_FPU},
860 ITEMPLATE_END
861 };
862
863 static struct itemplate instrux_FADDP[] = {
864 {I_FADDP, 1, {FPUREG,0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
865 {I_FADDP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
866 ITEMPLATE_END
867 };
868
869 static struct itemplate instrux_FBLD[] = {
870 {I_FBLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
871 {I_FBLD, 1, {MEMORY,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
872 ITEMPLATE_END
873 };
874
875 static struct itemplate instrux_FBSTP[] = {
876 {I_FBSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
877 {I_FBSTP, 1, {MEMORY,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
878 ITEMPLATE_END
879 };
880
881 static struct itemplate instrux_FCHS[] = {
882 {I_FCHS, 0, {0,0,0}, "\2\xD9\xE0", IF_8086|IF_FPU},
883 ITEMPLATE_END
884 };
885
886 static struct itemplate instrux_FCLEX[] = {
887 {I_FCLEX, 0, {0,0,0}, "\3\x9B\xDB\xE2", IF_8086|IF_FPU},
888 ITEMPLATE_END
889 };
890
891 static struct itemplate instrux_FCMOVB[] = {
892 {I_FCMOVB, 1, {FPUREG,0,0}, "\1\xDA\10\xC0", IF_P6|IF_FPU},
893 {I_FCMOVB, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC0", IF_P6|IF_FPU},
894 ITEMPLATE_END
895 };
896
897 static struct itemplate instrux_FCMOVBE[] = {
898 {I_FCMOVBE, 1, {FPUREG,0,0}, "\1\xDA\10\xD0", IF_P6|IF_FPU},
899 {I_FCMOVBE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD0", IF_P6|IF_FPU},
900 ITEMPLATE_END
901 };
902
903 static struct itemplate instrux_FCMOVE[] = {
904 {I_FCMOVE, 1, {FPUREG,0,0}, "\1\xDA\10\xC8", IF_P6|IF_FPU},
905 {I_FCMOVE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC8", IF_P6|IF_FPU},
906 ITEMPLATE_END
907 };
908
909 static struct itemplate instrux_FCMOVNB[] = {
910 {I_FCMOVNB, 1, {FPUREG,0,0}, "\1\xDB\10\xC0", IF_P6|IF_FPU},
911 {I_FCMOVNB, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC0", IF_P6|IF_FPU},
912 ITEMPLATE_END
913 };
914
915 static struct itemplate instrux_FCMOVNBE[] = {
916 {I_FCMOVNBE, 1, {FPUREG,0,0}, "\1\xDB\10\xD0", IF_P6|IF_FPU},
917 {I_FCMOVNBE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD0", IF_P6|IF_FPU},
918 ITEMPLATE_END
919 };
920
921 static struct itemplate instrux_FCMOVNE[] = {
922 {I_FCMOVNE, 1, {FPUREG,0,0}, "\1\xDB\10\xC8", IF_P6|IF_FPU},
923 {I_FCMOVNE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC8", IF_P6|IF_FPU},
924 ITEMPLATE_END
925 };
926
927 static struct itemplate instrux_FCMOVNU[] = {
928 {I_FCMOVNU, 1, {FPUREG,0,0}, "\1\xDB\10\xD8", IF_P6|IF_FPU},
929 {I_FCMOVNU, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD8", IF_P6|IF_FPU},
930 ITEMPLATE_END
931 };
932
933 static struct itemplate instrux_FCMOVU[] = {
934 {I_FCMOVU, 1, {FPUREG,0,0}, "\1\xDA\10\xD8", IF_P6|IF_FPU},
935 {I_FCMOVU, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD8", IF_P6|IF_FPU},
936 ITEMPLATE_END
937 };
938
939 static struct itemplate instrux_FCOM[] = {
940 {I_FCOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\202", IF_8086|IF_FPU},
941 {I_FCOM, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\202", IF_8086|IF_FPU},
942 {I_FCOM, 1, {FPUREG,0,0}, "\1\xD8\10\xD0", IF_8086|IF_FPU},
943 {I_FCOM, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD0", IF_8086|IF_FPU},
944 ITEMPLATE_END
945 };
946
947 static struct itemplate instrux_FCOMI[] = {
948 {I_FCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xF0", IF_P6|IF_FPU},
949 {I_FCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xF0", IF_P6|IF_FPU},
950 ITEMPLATE_END
951 };
952
953 static struct itemplate instrux_FCOMIP[] = {
954 {I_FCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xF0", IF_P6|IF_FPU},
955 {I_FCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xF0", IF_P6|IF_FPU},
956 ITEMPLATE_END
957 };
958
959 static struct itemplate instrux_FCOMP[] = {
960 {I_FCOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\203", IF_8086|IF_FPU},
961 {I_FCOMP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\203", IF_8086|IF_FPU},
962 {I_FCOMP, 1, {FPUREG,0,0}, "\1\xD8\10\xD8", IF_8086|IF_FPU},
963 {I_FCOMP, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD8", IF_8086|IF_FPU},
964 ITEMPLATE_END
965 };
966
967 static struct itemplate instrux_FCOMPP[] = {
968 {I_FCOMPP, 0, {0,0,0}, "\2\xDE\xD9", IF_8086|IF_FPU},
969 ITEMPLATE_END
970 };
971
972 static struct itemplate instrux_FCOS[] = {
973 {I_FCOS, 0, {0,0,0}, "\2\xD9\xFF", IF_386|IF_FPU},
974 ITEMPLATE_END
975 };
976
977 static struct itemplate instrux_FDECSTP[] = {
978 {I_FDECSTP, 0, {0,0,0}, "\2\xD9\xF6", IF_8086|IF_FPU},
979 ITEMPLATE_END
980 };
981
982 static struct itemplate instrux_FDISI[] = {
983 {I_FDISI, 0, {0,0,0}, "\3\x9B\xDB\xE1", IF_8086|IF_FPU},
984 ITEMPLATE_END
985 };
986
987 static struct itemplate instrux_FDIV[] = {
988 {I_FDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\206", IF_8086|IF_FPU},
989 {I_FDIV, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\206", IF_8086|IF_FPU},
990 {I_FDIV, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
991 {I_FDIV, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
992 {I_FDIV, 1, {FPUREG,0,0}, "\1\xD8\10\xF0", IF_8086|IF_FPU},
993 {I_FDIV, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF0", IF_8086|IF_FPU},
994 ITEMPLATE_END
995 };
996
997 static struct itemplate instrux_FDIVP[] = {
998 {I_FDIVP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
999 {I_FDIVP, 1, {FPUREG,0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
1000 ITEMPLATE_END
1001 };
1002
1003 static struct itemplate instrux_FDIVR[] = {
1004 {I_FDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\207", IF_8086|IF_FPU},
1005 {I_FDIVR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\207", IF_8086|IF_FPU},
1006 {I_FDIVR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
1007 {I_FDIVR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
1008 {I_FDIVR, 1, {FPUREG,0,0}, "\1\xD8\10\xF8", IF_8086|IF_FPU},
1009 {I_FDIVR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF8", IF_8086|IF_FPU},
1010 ITEMPLATE_END
1011 };
1012
1013 static struct itemplate instrux_FDIVRP[] = {
1014 {I_FDIVRP, 1, {FPUREG,0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
1015 {I_FDIVRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
1016 ITEMPLATE_END
1017 };
1018
1019 static struct itemplate instrux_FEMMS[] = {
1020 {I_FEMMS, 0, {0,0,0}, "\2\x0F\x0E", IF_PENT|IF_3DNOW},
1021 ITEMPLATE_END
1022 };
1023
1024 static struct itemplate instrux_FENI[] = {
1025 {I_FENI, 0, {0,0,0}, "\3\x9B\xDB\xE0", IF_8086|IF_FPU},
1026 ITEMPLATE_END
1027 };
1028
1029 static struct itemplate instrux_FFREE[] = {
1030 {I_FFREE, 1, {FPUREG,0,0}, "\1\xDD\10\xC0", IF_8086|IF_FPU},
1031 ITEMPLATE_END
1032 };
1033
1034 static struct itemplate instrux_FFREEP[] = {
1035 {I_FFREEP, 1, {FPUREG,0,0}, "\1\xDF\10\xC0", IF_286|IF_FPU|IF_UNDOC},
1036 ITEMPLATE_END
1037 };
1038
1039 static struct itemplate instrux_FIADD[] = {
1040 {I_FIADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\200", IF_8086|IF_FPU},
1041 {I_FIADD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\200", IF_8086|IF_FPU},
1042 ITEMPLATE_END
1043 };
1044
1045 static struct itemplate instrux_FICOM[] = {
1046 {I_FICOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\202", IF_8086|IF_FPU},
1047 {I_FICOM, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\202", IF_8086|IF_FPU},
1048 ITEMPLATE_END
1049 };
1050
1051 static struct itemplate instrux_FICOMP[] = {
1052 {I_FICOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\203", IF_8086|IF_FPU},
1053 {I_FICOMP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\203", IF_8086|IF_FPU},
1054 ITEMPLATE_END
1055 };
1056
1057 static struct itemplate instrux_FIDIV[] = {
1058 {I_FIDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\206", IF_8086|IF_FPU},
1059 {I_FIDIV, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\206", IF_8086|IF_FPU},
1060 ITEMPLATE_END
1061 };
1062
1063 static struct itemplate instrux_FIDIVR[] = {
1064 {I_FIDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\207", IF_8086|IF_FPU},
1065 {I_FIDIVR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\207", IF_8086|IF_FPU},
1066 ITEMPLATE_END
1067 };
1068
1069 static struct itemplate instrux_FILD[] = {
1070 {I_FILD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\200", IF_8086|IF_FPU},
1071 {I_FILD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\200", IF_8086|IF_FPU},
1072 {I_FILD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\205", IF_8086|IF_FPU},
1073 ITEMPLATE_END
1074 };
1075
1076 static struct itemplate instrux_FIMUL[] = {
1077 {I_FIMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\201", IF_8086|IF_FPU},
1078 {I_FIMUL, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\201", IF_8086|IF_FPU},
1079 ITEMPLATE_END
1080 };
1081
1082 static struct itemplate instrux_FINCSTP[] = {
1083 {I_FINCSTP, 0, {0,0,0}, "\2\xD9\xF7", IF_8086|IF_FPU},
1084 ITEMPLATE_END
1085 };
1086
1087 static struct itemplate instrux_FINIT[] = {
1088 {I_FINIT, 0, {0,0,0}, "\3\x9B\xDB\xE3", IF_8086|IF_FPU},
1089 ITEMPLATE_END
1090 };
1091
1092 static struct itemplate instrux_FIST[] = {
1093 {I_FIST, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\202", IF_8086|IF_FPU},
1094 {I_FIST, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\202", IF_8086|IF_FPU},
1095 ITEMPLATE_END
1096 };
1097
1098 static struct itemplate instrux_FISTP[] = {
1099 {I_FISTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\203", IF_8086|IF_FPU},
1100 {I_FISTP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\203", IF_8086|IF_FPU},
1101 {I_FISTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\207", IF_8086|IF_FPU},
1102 ITEMPLATE_END
1103 };
1104
1105 static struct itemplate instrux_FISTTP[] = {
1106 {I_FISTTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDD\201", IF_PRESCOTT|IF_FPU},
1107 {I_FISTTP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDB\201", IF_PRESCOTT|IF_FPU},
1108 {I_FISTTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\201", IF_PRESCOTT|IF_FPU},
1109 ITEMPLATE_END
1110 };
1111
1112 static struct itemplate instrux_FISUB[] = {
1113 {I_FISUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\204", IF_8086|IF_FPU},
1114 {I_FISUB, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\204", IF_8086|IF_FPU},
1115 ITEMPLATE_END
1116 };
1117
1118 static struct itemplate instrux_FISUBR[] = {
1119 {I_FISUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\205", IF_8086|IF_FPU},
1120 {I_FISUBR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\205", IF_8086|IF_FPU},
1121 ITEMPLATE_END
1122 };
1123
1124 static struct itemplate instrux_FLD[] = {
1125 {I_FLD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\200", IF_8086|IF_FPU},
1126 {I_FLD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\200", IF_8086|IF_FPU},
1127 {I_FLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\205", IF_8086|IF_FPU},
1128 {I_FLD, 1, {FPUREG,0,0}, "\1\xD9\10\xC0", IF_8086|IF_FPU},
1129 ITEMPLATE_END
1130 };
1131
1132 static struct itemplate instrux_FLD1[] = {
1133 {I_FLD1, 0, {0,0,0}, "\2\xD9\xE8", IF_8086|IF_FPU},
1134 ITEMPLATE_END
1135 };
1136
1137 static struct itemplate instrux_FLDCW[] = {
1138 {I_FLDCW, 1, {MEMORY,0,0}, "\300\1\xD9\205", IF_8086|IF_FPU|IF_SW},
1139 ITEMPLATE_END
1140 };
1141
1142 static struct itemplate instrux_FLDENV[] = {
1143 {I_FLDENV, 1, {MEMORY,0,0}, "\300\1\xD9\204", IF_8086|IF_FPU},
1144 ITEMPLATE_END
1145 };
1146
1147 static struct itemplate instrux_FLDL2E[] = {
1148 {I_FLDL2E, 0, {0,0,0}, "\2\xD9\xEA", IF_8086|IF_FPU},
1149 ITEMPLATE_END
1150 };
1151
1152 static struct itemplate instrux_FLDL2T[] = {
1153 {I_FLDL2T, 0, {0,0,0}, "\2\xD9\xE9", IF_8086|IF_FPU},
1154 ITEMPLATE_END
1155 };
1156
1157 static struct itemplate instrux_FLDLG2[] = {
1158 {I_FLDLG2, 0, {0,0,0}, "\2\xD9\xEC", IF_8086|IF_FPU},
1159 ITEMPLATE_END
1160 };
1161
1162 static struct itemplate instrux_FLDLN2[] = {
1163 {I_FLDLN2, 0, {0,0,0}, "\2\xD9\xED", IF_8086|IF_FPU},
1164 ITEMPLATE_END
1165 };
1166
1167 static struct itemplate instrux_FLDPI[] = {
1168 {I_FLDPI, 0, {0,0,0}, "\2\xD9\xEB", IF_8086|IF_FPU},
1169 ITEMPLATE_END
1170 };
1171
1172 static struct itemplate instrux_FLDZ[] = {
1173 {I_FLDZ, 0, {0,0,0}, "\2\xD9\xEE", IF_8086|IF_FPU},
1174 ITEMPLATE_END
1175 };
1176
1177 static struct itemplate instrux_FMUL[] = {
1178 {I_FMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\201", IF_8086|IF_FPU},
1179 {I_FMUL, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\201", IF_8086|IF_FPU},
1180 {I_FMUL, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
1181 {I_FMUL, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
1182 {I_FMUL, 1, {FPUREG,0,0}, "\1\xD8\10\xC8", IF_8086|IF_FPU},
1183 {I_FMUL, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC8", IF_8086|IF_FPU},
1184 ITEMPLATE_END
1185 };
1186
1187 static struct itemplate instrux_FMULP[] = {
1188 {I_FMULP, 1, {FPUREG,0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
1189 {I_FMULP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
1190 ITEMPLATE_END
1191 };
1192
1193 static struct itemplate instrux_FNCLEX[] = {
1194 {I_FNCLEX, 0, {0,0,0}, "\2\xDB\xE2", IF_8086|IF_FPU},
1195 ITEMPLATE_END
1196 };
1197
1198 static struct itemplate instrux_FNDISI[] = {
1199 {I_FNDISI, 0, {0,0,0}, "\2\xDB\xE1", IF_8086|IF_FPU},
1200 ITEMPLATE_END
1201 };
1202
1203 static struct itemplate instrux_FNENI[] = {
1204 {I_FNENI, 0, {0,0,0}, "\2\xDB\xE0", IF_8086|IF_FPU},
1205 ITEMPLATE_END
1206 };
1207
1208 static struct itemplate instrux_FNINIT[] = {
1209 {I_FNINIT, 0, {0,0,0}, "\2\xDB\xE3", IF_8086|IF_FPU},
1210 ITEMPLATE_END
1211 };
1212
1213 static struct itemplate instrux_FNOP[] = {
1214 {I_FNOP, 0, {0,0,0}, "\2\xD9\xD0", IF_8086|IF_FPU},
1215 ITEMPLATE_END
1216 };
1217
1218 static struct itemplate instrux_FNSAVE[] = {
1219 {I_FNSAVE, 1, {MEMORY,0,0}, "\300\1\xDD\206", IF_8086|IF_FPU},
1220 ITEMPLATE_END
1221 };
1222
1223 static struct itemplate instrux_FNSTCW[] = {
1224 {I_FNSTCW, 1, {MEMORY,0,0}, "\300\1\xD9\207", IF_8086|IF_FPU|IF_SW},
1225 ITEMPLATE_END
1226 };
1227
1228 static struct itemplate instrux_FNSTENV[] = {
1229 {I_FNSTENV, 1, {MEMORY,0,0}, "\300\1\xD9\206", IF_8086|IF_FPU},
1230 ITEMPLATE_END
1231 };
1232
1233 static struct itemplate instrux_FNSTSW[] = {
1234 {I_FNSTSW, 1, {MEMORY,0,0}, "\300\1\xDD\207", IF_8086|IF_FPU|IF_SW},
1235 {I_FNSTSW, 1, {REG_AX,0,0}, "\2\xDF\xE0", IF_286|IF_FPU},
1236 ITEMPLATE_END
1237 };
1238
1239 static struct itemplate instrux_FPATAN[] = {
1240 {I_FPATAN, 0, {0,0,0}, "\2\xD9\xF3", IF_8086|IF_FPU},
1241 ITEMPLATE_END
1242 };
1243
1244 static struct itemplate instrux_FPREM[] = {
1245 {I_FPREM, 0, {0,0,0}, "\2\xD9\xF8", IF_8086|IF_FPU},
1246 ITEMPLATE_END
1247 };
1248
1249 static struct itemplate instrux_FPREM1[] = {
1250 {I_FPREM1, 0, {0,0,0}, "\2\xD9\xF5", IF_386|IF_FPU},
1251 ITEMPLATE_END
1252 };
1253
1254 static struct itemplate instrux_FPTAN[] = {
1255 {I_FPTAN, 0, {0,0,0}, "\2\xD9\xF2", IF_8086|IF_FPU},
1256 ITEMPLATE_END
1257 };
1258
1259 static struct itemplate instrux_FRNDINT[] = {
1260 {I_FRNDINT, 0, {0,0,0}, "\2\xD9\xFC", IF_8086|IF_FPU},
1261 ITEMPLATE_END
1262 };
1263
1264 static struct itemplate instrux_FRSTOR[] = {
1265 {I_FRSTOR, 1, {MEMORY,0,0}, "\300\1\xDD\204", IF_8086|IF_FPU},
1266 ITEMPLATE_END
1267 };
1268
1269 static struct itemplate instrux_FSAVE[] = {
1270 {I_FSAVE, 1, {MEMORY,0,0}, "\300\2\x9B\xDD\206", IF_8086|IF_FPU},
1271 ITEMPLATE_END
1272 };
1273
1274 static struct itemplate instrux_FSCALE[] = {
1275 {I_FSCALE, 0, {0,0,0}, "\2\xD9\xFD", IF_8086|IF_FPU},
1276 ITEMPLATE_END
1277 };
1278
1279 static struct itemplate instrux_FSETPM[] = {
1280 {I_FSETPM, 0, {0,0,0}, "\2\xDB\xE4", IF_286|IF_FPU},
1281 ITEMPLATE_END
1282 };
1283
1284 static struct itemplate instrux_FSIN[] = {
1285 {I_FSIN, 0, {0,0,0}, "\2\xD9\xFE", IF_386|IF_FPU},
1286 ITEMPLATE_END
1287 };
1288
1289 static struct itemplate instrux_FSINCOS[] = {
1290 {I_FSINCOS, 0, {0,0,0}, "\2\xD9\xFB", IF_386|IF_FPU},
1291 ITEMPLATE_END
1292 };
1293
1294 static struct itemplate instrux_FSQRT[] = {
1295 {I_FSQRT, 0, {0,0,0}, "\2\xD9\xFA", IF_8086|IF_FPU},
1296 ITEMPLATE_END
1297 };
1298
1299 static struct itemplate instrux_FST[] = {
1300 {I_FST, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\202", IF_8086|IF_FPU},
1301 {I_FST, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\202", IF_8086|IF_FPU},
1302 {I_FST, 1, {FPUREG,0,0}, "\1\xDD\10\xD0", IF_8086|IF_FPU},
1303 ITEMPLATE_END
1304 };
1305
1306 static struct itemplate instrux_FSTCW[] = {
1307 {I_FSTCW, 1, {MEMORY,0,0}, "\300\2\x9B\xD9\207", IF_8086|IF_FPU|IF_SW},
1308 ITEMPLATE_END
1309 };
1310
1311 static struct itemplate instrux_FSTENV[] = {
1312 {I_FSTENV, 1, {MEMORY,0,0}, "\300\2\x9B\xD9\206", IF_8086|IF_FPU},
1313 ITEMPLATE_END
1314 };
1315
1316 static struct itemplate instrux_FSTP[] = {
1317 {I_FSTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\203", IF_8086|IF_FPU},
1318 {I_FSTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\203", IF_8086|IF_FPU},
1319 {I_FSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\207", IF_8086|IF_FPU},
1320 {I_FSTP, 1, {FPUREG,0,0}, "\1\xDD\10\xD8", IF_8086|IF_FPU},
1321 ITEMPLATE_END
1322 };
1323
1324 static struct itemplate instrux_FSTSW[] = {
1325 {I_FSTSW, 1, {MEMORY,0,0}, "\300\2\x9B\xDD\207", IF_8086|IF_FPU|IF_SW},
1326 {I_FSTSW, 1, {REG_AX,0,0}, "\3\x9B\xDF\xE0", IF_286|IF_FPU},
1327 ITEMPLATE_END
1328 };
1329
1330 static struct itemplate instrux_FSUB[] = {
1331 {I_FSUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\204", IF_8086|IF_FPU},
1332 {I_FSUB, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\204", IF_8086|IF_FPU},
1333 {I_FSUB, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
1334 {I_FSUB, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
1335 {I_FSUB, 1, {FPUREG,0,0}, "\1\xD8\10\xE0", IF_8086|IF_FPU},
1336 {I_FSUB, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE0", IF_8086|IF_FPU},
1337 ITEMPLATE_END
1338 };
1339
1340 static struct itemplate instrux_FSUBP[] = {
1341 {I_FSUBP, 1, {FPUREG,0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
1342 {I_FSUBP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
1343 ITEMPLATE_END
1344 };
1345
1346 static struct itemplate instrux_FSUBR[] = {
1347 {I_FSUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\205", IF_8086|IF_FPU},
1348 {I_FSUBR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\205", IF_8086|IF_FPU},
1349 {I_FSUBR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
1350 {I_FSUBR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
1351 {I_FSUBR, 1, {FPUREG,0,0}, "\1\xD8\10\xE8", IF_8086|IF_FPU},
1352 {I_FSUBR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE8", IF_8086|IF_FPU},
1353 ITEMPLATE_END
1354 };
1355
1356 static struct itemplate instrux_FSUBRP[] = {
1357 {I_FSUBRP, 1, {FPUREG,0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
1358 {I_FSUBRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
1359 ITEMPLATE_END
1360 };
1361
1362 static struct itemplate instrux_FTST[] = {
1363 {I_FTST, 0, {0,0,0}, "\2\xD9\xE4", IF_8086|IF_FPU},
1364 ITEMPLATE_END
1365 };
1366
1367 static struct itemplate instrux_FUCOM[] = {
1368 {I_FUCOM, 1, {FPUREG,0,0}, "\1\xDD\10\xE0", IF_386|IF_FPU},
1369 {I_FUCOM, 2, {FPU0,FPUREG,0}, "\1\xDD\11\xE0", IF_386|IF_FPU},
1370 ITEMPLATE_END
1371 };
1372
1373 static struct itemplate instrux_FUCOMI[] = {
1374 {I_FUCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xE8", IF_P6|IF_FPU},
1375 {I_FUCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xE8", IF_P6|IF_FPU},
1376 ITEMPLATE_END
1377 };
1378
1379 static struct itemplate instrux_FUCOMIP[] = {
1380 {I_FUCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xE8", IF_P6|IF_FPU},
1381 {I_FUCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xE8", IF_P6|IF_FPU},
1382 ITEMPLATE_END
1383 };
1384
1385 static struct itemplate instrux_FUCOMP[] = {
1386 {I_FUCOMP, 1, {FPUREG,0,0}, "\1\xDD\10\xE8", IF_386|IF_FPU},
1387 {I_FUCOMP, 2, {FPU0,FPUREG,0}, "\1\xDD\11\xE8", IF_386|IF_FPU},
1388 ITEMPLATE_END
1389 };
1390
1391 static struct itemplate instrux_FUCOMPP[] = {
1392 {I_FUCOMPP, 0, {0,0,0}, "\2\xDA\xE9", IF_386|IF_FPU},
1393 ITEMPLATE_END
1394 };
1395
1396 static struct itemplate instrux_FWAIT[] = {
1397 {I_FWAIT, 0, {0,0,0}, "\1\x9B", IF_8086},
1398 ITEMPLATE_END
1399 };
1400
1401 static struct itemplate instrux_FXAM[] = {
1402 {I_FXAM, 0, {0,0,0}, "\2\xD9\xE5", IF_8086|IF_FPU},
1403 ITEMPLATE_END
1404 };
1405
1406 static struct itemplate instrux_FXCH[] = {
1407 {I_FXCH, 0, {0,0,0}, "\2\xD9\xC9", IF_8086|IF_FPU},
1408 {I_FXCH, 1, {FPUREG,0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
1409 {I_FXCH, 2, {FPUREG,FPU0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
1410 {I_FXCH, 2, {FPU0,FPUREG,0}, "\1\xD9\11\xC8", IF_8086|IF_FPU},
1411 ITEMPLATE_END
1412 };
1413
1414 static struct itemplate instrux_FXRSTOR[] = {
1415 {I_FXRSTOR, 1, {MEMORY,0,0}, "\300\2\x0F\xAE\201", IF_P6|IF_SSE|IF_FPU},
1416 ITEMPLATE_END
1417 };
1418
1419 static struct itemplate instrux_FXSAVE[] = {
1420 {I_FXSAVE, 1, {MEMORY,0,0}, "\300\2\x0F\xAE\200", IF_P6|IF_SSE|IF_FPU},
1421 ITEMPLATE_END
1422 };
1423
1424 static struct itemplate instrux_FXTRACT[] = {
1425 {I_FXTRACT, 0, {0,0,0}, "\2\xD9\xF4", IF_8086|IF_FPU},
1426 ITEMPLATE_END
1427 };
1428
1429 static struct itemplate instrux_FYL2X[] = {
1430 {I_FYL2X, 0, {0,0,0}, "\2\xD9\xF1", IF_8086|IF_FPU},
1431 ITEMPLATE_END
1432 };
1433
1434 static struct itemplate instrux_FYL2XP1[] = {
1435 {I_FYL2XP1, 0, {0,0,0}, "\2\xD9\xF9", IF_8086|IF_FPU},
1436 ITEMPLATE_END
1437 };
1438
1439 static struct itemplate instrux_HADDPD[] = {
1440 {I_HADDPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x7C\110", IF_PRESCOTT|IF_SSE3|IF_SM},
1441 {I_HADDPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x7C\110", IF_PRESCOTT|IF_SSE3},
1442 ITEMPLATE_END
1443 };
1444
1445 static struct itemplate instrux_HADDPS[] = {
1446 {I_HADDPS, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x7C\110", IF_PRESCOTT|IF_SSE3|IF_SM},
1447 {I_HADDPS, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x7C\110", IF_PRESCOTT|IF_SSE3},
1448 ITEMPLATE_END
1449 };
1450
1451 static struct itemplate instrux_HLT[] = {
1452 {I_HLT, 0, {0,0,0}, "\1\xF4", IF_8086|IF_PRIV},
1453 ITEMPLATE_END
1454 };
1455
1456 static struct itemplate instrux_HSUBPD[] = {
1457 {I_HSUBPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x7D\110", IF_PRESCOTT|IF_SSE3|IF_SM},
1458 {I_HSUBPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x7D\110", IF_PRESCOTT|IF_SSE3},
1459 ITEMPLATE_END
1460 };
1461
1462 static struct itemplate instrux_HSUBPS[] = {
1463 {I_HSUBPS, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x7D\110", IF_PRESCOTT|IF_SSE3|IF_SM},
1464 {I_HSUBPS, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x7D\110", IF_PRESCOTT|IF_SSE3},
1465 ITEMPLATE_END
1466 };
1467
1468 static struct itemplate instrux_IBTS[] = {
1469 {I_IBTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_386|IF_SW|IF_UNDOC},
1470 {I_IBTS, 2, {REG16,REG16,0}, "\320\2\x0F\xA7\101", IF_386|IF_UNDOC},
1471 {I_IBTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_386|IF_SD|IF_UNDOC},
1472 {I_IBTS, 2, {REG32,REG32,0}, "\321\2\x0F\xA7\101", IF_386|IF_UNDOC},
1473 ITEMPLATE_END
1474 };
1475
1476 static struct itemplate instrux_ICEBP[] = {
1477 {I_ICEBP, 0, {0,0,0}, "\1\xF1", IF_386},
1478 ITEMPLATE_END
1479 };
1480
1481 static struct itemplate instrux_IDIV[] = {
1482 {I_IDIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\207", IF_8086},
1483 {I_IDIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\207", IF_8086},
1484 {I_IDIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\207", IF_386},
1485 ITEMPLATE_END
1486 };
1487
1488 static struct itemplate instrux_IMUL[] = {
1489 {I_IMUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\205", IF_8086},
1490 {I_IMUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\205", IF_8086},
1491 {I_IMUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\205", IF_386},
1492 {I_IMUL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xAF\110", IF_386|IF_SM},
1493 {I_IMUL, 2, {REG16,REG16,0}, "\320\2\x0F\xAF\110", IF_386},
1494 {I_IMUL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xAF\110", IF_386|IF_SM},
1495 {I_IMUL, 2, {REG32,REG32,0}, "\321\2\x0F\xAF\110", IF_386},
1496 {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE|BITS8}, "\320\301\1\x6B\110\16", IF_186|IF_SM},
1497 {I_IMUL, 3, {REG16,MEMORY,SBYTE}, "\320\301\1\x6B\110\16", IF_186|IF_SM},
1498 {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE|BITS16}, "\320\301\1\x69\110\32", IF_186|IF_SM},
1499 {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE}, "\320\301\135\1\x69\110\132", IF_186|IF_SM},
1500 {I_IMUL, 3, {REG16,REG16,IMMEDIATE|BITS8}, "\320\1\x6B\110\16", IF_186},
1501 {I_IMUL, 3, {REG16,REG16,SBYTE}, "\320\1\x6B\110\16", IF_186|IF_SM},
1502 {I_IMUL, 3, {REG16,REG16,IMMEDIATE|BITS16}, "\320\1\x69\110\32", IF_186},
1503 {I_IMUL, 3, {REG16,REG16,IMMEDIATE}, "\320\135\1\x69\110\132", IF_186|IF_SM},
1504 {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE|BITS8}, "\321\301\1\x6B\110\16", IF_386|IF_SM},
1505 {I_IMUL, 3, {REG32,MEMORY,SBYTE}, "\321\301\1\x6B\110\16", IF_386|IF_SM},
1506 {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE|BITS32}, "\321\301\1\x69\110\42", IF_386|IF_SM},
1507 {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE}, "\321\301\145\1\x69\110\142", IF_386|IF_SM},
1508 {I_IMUL, 3, {REG32,REG32,IMMEDIATE|BITS8}, "\321\1\x6B\110\16", IF_386},
1509 {I_IMUL, 3, {REG32,REG32,SBYTE}, "\321\1\x6B\110\16", IF_386|IF_SM},
1510 {I_IMUL, 3, {REG32,REG32,IMMEDIATE|BITS32}, "\321\1\x69\110\42", IF_386},
1511 {I_IMUL, 3, {REG32,REG32,IMMEDIATE}, "\321\145\1\x69\110\142", IF_386|IF_SM},
1512 {I_IMUL, 2, {REG16,IMMEDIATE|BITS8,0}, "\320\1\x6B\100\15", IF_186},
1513 {I_IMUL, 2, {REG16,SBYTE,0}, "\320\1\x6B\100\15", IF_186|IF_SM},
1514 {I_IMUL, 2, {REG16,IMMEDIATE|BITS16,0}, "\320\1\x69\100\31", IF_186},
1515 {I_IMUL, 2, {REG16,IMMEDIATE,0}, "\320\134\1\x69\100\131", IF_186|IF_SM},
1516 {I_IMUL, 2, {REG32,IMMEDIATE|BITS8,0}, "\321\1\x6B\100\15", IF_386},
1517 {I_IMUL, 2, {REG32,SBYTE,0}, "\321\1\x6B\100\15", IF_386|IF_SM},
1518 {I_IMUL, 2, {REG32,IMMEDIATE|BITS32,0}, "\321\1\x69\100\41", IF_386},
1519 {I_IMUL, 2, {REG32,IMMEDIATE,0}, "\321\144\1\x69\100\141", IF_386|IF_SM},
1520 ITEMPLATE_END
1521 };
1522
1523 static struct itemplate instrux_IN[] = {
1524 {I_IN, 2, {REG_AL,IMMEDIATE,0}, "\1\xE4\25", IF_8086|IF_SB},
1525 {I_IN, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xE5\25", IF_8086|IF_SB},
1526 {I_IN, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xE5\25", IF_386|IF_SB},
1527 {I_IN, 2, {REG_AL,REG_DX,0}, "\1\xEC", IF_8086},
1528 {I_IN, 2, {REG_AX,REG_DX,0}, "\320\1\xED", IF_8086},
1529 {I_IN, 2, {REG_EAX,REG_DX,0}, "\321\1\xED", IF_386},
1530 ITEMPLATE_END
1531 };
1532
1533 static struct itemplate instrux_INC[] = {
1534 {I_INC, 1, {REG16,0,0}, "\320\10\x40", IF_8086},
1535 {I_INC, 1, {REG32,0,0}, "\321\10\x40", IF_386},
1536 {I_INC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\200", IF_8086},
1537 {I_INC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\200", IF_8086},
1538 {I_INC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\200", IF_386},
1539 ITEMPLATE_END
1540 };
1541
1542 static struct itemplate instrux_INCBIN[] = {
1543 ITEMPLATE_END
1544 };
1545
1546 static struct itemplate instrux_INSB[] = {
1547 {I_INSB, 0, {0,0,0}, "\1\x6C", IF_186},
1548 ITEMPLATE_END
1549 };
1550
1551 static struct itemplate instrux_INSD[] = {
1552 {I_INSD, 0, {0,0,0}, "\321\1\x6D", IF_386},
1553 ITEMPLATE_END
1554 };
1555
1556 static struct itemplate instrux_INSW[] = {
1557 {I_INSW, 0, {0,0,0}, "\320\1\x6D", IF_186},
1558 ITEMPLATE_END
1559 };
1560
1561 static struct itemplate instrux_INT[] = {
1562 {I_INT, 1, {IMMEDIATE,0,0}, "\1\xCD\24", IF_8086|IF_SB},
1563 ITEMPLATE_END
1564 };
1565
1566 static struct itemplate instrux_INT01[] = {
1567 {I_INT01, 0, {0,0,0}, "\1\xF1", IF_386},
1568 ITEMPLATE_END
1569 };
1570
1571 static struct itemplate instrux_INT03[] = {
1572 {I_INT03, 0, {0,0,0}, "\1\xCC", IF_8086},
1573 ITEMPLATE_END
1574 };
1575
1576 static struct itemplate instrux_INT1[] = {
1577 {I_INT1, 0, {0,0,0}, "\1\xF1", IF_386},
1578 ITEMPLATE_END
1579 };
1580
1581 static struct itemplate instrux_INT3[] = {
1582 {I_INT3, 0, {0,0,0}, "\1\xCC", IF_8086},
1583 ITEMPLATE_END
1584 };
1585
1586 static struct itemplate instrux_INTO[] = {
1587 {I_INTO, 0, {0,0,0}, "\1\xCE", IF_8086},
1588 ITEMPLATE_END
1589 };
1590
1591 static struct itemplate instrux_INVD[] = {
1592 {I_INVD, 0, {0,0,0}, "\2\x0F\x08", IF_486|IF_PRIV},
1593 ITEMPLATE_END
1594 };
1595
1596 static struct itemplate instrux_INVLPG[] = {
1597 {I_INVLPG, 1, {MEMORY,0,0}, "\300\2\x0F\x01\207", IF_486|IF_PRIV},
1598 ITEMPLATE_END
1599 };
1600
1601 static struct itemplate instrux_IRET[] = {
1602 {I_IRET, 0, {0,0,0}, "\322\1\xCF", IF_8086},
1603 ITEMPLATE_END
1604 };
1605
1606 static struct itemplate instrux_IRETD[] = {
1607 {I_IRETD, 0, {0,0,0}, "\321\1\xCF", IF_386},
1608 ITEMPLATE_END
1609 };
1610
1611 static struct itemplate instrux_IRETW[] = {
1612 {I_IRETW, 0, {0,0,0}, "\320\1\xCF", IF_8086},
1613 ITEMPLATE_END
1614 };
1615
1616 static struct itemplate instrux_JCXZ[] = {
1617 {I_JCXZ, 1, {IMMEDIATE,0,0}, "\310\1\xE3\50", IF_8086},
1618 ITEMPLATE_END
1619 };
1620
1621 static struct itemplate instrux_JECXZ[] = {
1622 {I_JECXZ, 1, {IMMEDIATE,0,0}, "\311\1\xE3\50", IF_386},
1623 ITEMPLATE_END
1624 };
1625
1626 static struct itemplate instrux_JMP[] = {
1627 {I_JMP, 1, {IMMEDIATE|SHORT,0,0}, "\1\xEB\50", IF_8086},
1628 {I_JMP, 1, {IMMEDIATE,0,0}, "\371\1\xEB\50", IF_8086},
1629 {I_JMP, 1, {IMMEDIATE,0,0}, "\322\1\xE9\64", IF_8086},
1630 {I_JMP, 1, {IMMEDIATE|NEAR,0,0}, "\322\1\xE9\64", IF_8086},
1631 {I_JMP, 1, {IMMEDIATE|FAR,0,0}, "\322\1\xEA\34\37", IF_8086},
1632 {I_JMP, 1, {IMMEDIATE|BITS16,0,0}, "\320\1\xE9\64", IF_8086},
1633 {I_JMP, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "\320\1\xE9\64", IF_8086},
1634 {I_JMP, 1, {IMMEDIATE|BITS16|FAR,0,0}, "\320\1\xEA\34\37", IF_8086},
1635 {I_JMP, 1, {IMMEDIATE|BITS32,0,0}, "\321\1\xE9\64", IF_386},
1636 {I_JMP, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "\321\1\xE9\64", IF_386},
1637 {I_JMP, 1, {IMMEDIATE|BITS32|FAR,0,0}, "\321\1\xEA\34\37", IF_386},
1638 {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\xEA\35\30", IF_8086},
1639 {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\xEA\31\30", IF_8086},
1640 {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\xEA\31\30", IF_8086},
1641 {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\xEA\41\30", IF_386},
1642 {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\xEA\41\30", IF_386},
1643 {I_JMP, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\205", IF_8086},
1644 {I_JMP, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\205", IF_8086},
1645 {I_JMP, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\205", IF_386},
1646 {I_JMP, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\204", IF_8086},
1647 {I_JMP, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\204", IF_8086},
1648 {I_JMP, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\204", IF_386},
1649 {I_JMP, 1, {REG16,0,0}, "\320\300\1\xFF\204", IF_8086},
1650 {I_JMP, 1, {REG32,0,0}, "\321\300\1\xFF\204", IF_386},
1651 {I_JMP, 1, {MEMORY,0,0}, "\322\300\1\xFF\204", IF_8086},
1652 {I_JMP, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\204", IF_8086},
1653 {I_JMP, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\204", IF_386},
1654 ITEMPLATE_END
1655 };
1656
1657 static struct itemplate instrux_JMPE[] = {
1658 {I_JMPE, 1, {IMMEDIATE,0,0}, "\322\2\x0F\xB8\64", IF_IA64},
1659 {I_JMPE, 1, {IMMEDIATE|BITS16,0,0}, "\320\2\x0F\xB8\64", IF_IA64},
1660 {I_JMPE, 1, {IMMEDIATE|BITS32,0,0}, "\321\2\x0F\xB8\64", IF_IA64},
1661 {I_JMPE, 1, {REGMEM|BITS16,0,0}, "\320\2\x0F\x00\206", IF_IA64},
1662 {I_JMPE, 1, {REGMEM|BITS32,0,0}, "\321\2\x0F\x00\206", IF_IA64},
1663 ITEMPLATE_END
1664 };
1665
1666 static struct itemplate instrux_LAHF[] = {
1667 {I_LAHF, 0, {0,0,0}, "\1\x9F", IF_8086},
1668 ITEMPLATE_END
1669 };
1670
1671 static struct itemplate instrux_LAR[] = {
1672 {I_LAR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x02\110", IF_286|IF_PROT|IF_SM},
1673 {I_LAR, 2, {REG16,REG16,0}, "\320\2\x0F\x02\110", IF_286|IF_PROT},
1674 {I_LAR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x02\110", IF_386|IF_PROT|IF_SM},
1675 {I_LAR, 2, {REG32,REG32,0}, "\321\2\x0F\x02\110", IF_386|IF_PROT},
1676 ITEMPLATE_END
1677 };
1678
1679 static struct itemplate instrux_LDDQU[] = {
1680 {I_LDDQU, 2, {XMMREG,MEMORY,0}, "\3\xF2\x0F\xF0\110", IF_PRESCOTT|IF_SSE3},
1681 ITEMPLATE_END
1682 };
1683
1684 static struct itemplate instrux_LDMXCSR[] = {
1685 {I_LDMXCSR, 1, {MEMORY,0,0}, "\300\2\x0F\xAE\202", IF_KATMAI|IF_SSE|IF_SD},
1686 ITEMPLATE_END
1687 };
1688
1689 static struct itemplate instrux_LDS[] = {
1690 {I_LDS, 2, {REG16,MEMORY,0}, "\320\301\1\xC5\110", IF_8086},
1691 {I_LDS, 2, {REG32,MEMORY,0}, "\321\301\1\xC5\110", IF_386},
1692 ITEMPLATE_END
1693 };
1694
1695 static struct itemplate instrux_LEA[] = {
1696 {I_LEA, 2, {REG16,MEMORY,0}, "\320\301\1\x8D\110", IF_8086},
1697 {I_LEA, 2, {REG32,MEMORY,0}, "\321\301\1\x8D\110", IF_386},
1698 ITEMPLATE_END
1699 };
1700
1701 static struct itemplate instrux_LEAVE[] = {
1702 {I_LEAVE, 0, {0,0,0}, "\1\xC9", IF_186},
1703 ITEMPLATE_END
1704 };
1705
1706 static struct itemplate instrux_LES[] = {
1707 {I_LES, 2, {REG16,MEMORY,0}, "\320\301\1\xC4\110", IF_8086},
1708 {I_LES, 2, {REG32,MEMORY,0}, "\321\301\1\xC4\110", IF_386},
1709 ITEMPLATE_END
1710 };
1711
1712 static struct itemplate instrux_LFENCE[] = {
1713 {I_LFENCE, 0, {0,0,0}, "\3\x0F\xAE\xE8", IF_WILLAMETTE|IF_SSE2},
1714 ITEMPLATE_END
1715 };
1716
1717 static struct itemplate instrux_LFS[] = {
1718 {I_LFS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB4\110", IF_386},
1719 {I_LFS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB4\110", IF_386},
1720 ITEMPLATE_END
1721 };
1722
1723 static struct itemplate instrux_LGDT[] = {
1724 {I_LGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\202", IF_286|IF_PRIV},
1725 ITEMPLATE_END
1726 };
1727
1728 static struct itemplate instrux_LGS[] = {
1729 {I_LGS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB5\110", IF_386},
1730 {I_LGS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB5\110", IF_386},
1731 ITEMPLATE_END
1732 };
1733
1734 static struct itemplate instrux_LIDT[] = {
1735 {I_LIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\203", IF_286|IF_PRIV},
1736 ITEMPLATE_END
1737 };
1738
1739 static struct itemplate instrux_LLDT[] = {
1740 {I_LLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\202", IF_286|IF_PROT|IF_PRIV},
1741 {I_LLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\202", IF_286|IF_PROT|IF_PRIV},
1742 {I_LLDT, 1, {REG16,0,0}, "\1\x0F\17\202", IF_286|IF_PROT|IF_PRIV},
1743 ITEMPLATE_END
1744 };
1745
1746 static struct itemplate instrux_LMSW[] = {
1747 {I_LMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
1748 {I_LMSW, 1, {MEMORY|BITS16,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
1749 {I_LMSW, 1, {REG16,0,0}, "\2\x0F\x01\206", IF_286|IF_PRIV},
1750 ITEMPLATE_END
1751 };
1752
1753 static struct itemplate instrux_LOADALL[] = {
1754 {I_LOADALL, 0, {0,0,0}, "\2\x0F\x07", IF_386|IF_UNDOC},
1755 ITEMPLATE_END
1756 };
1757
1758 static struct itemplate instrux_LOADALL286[] = {
1759 {I_LOADALL286, 0, {0,0,0}, "\2\x0F\x05", IF_286|IF_UNDOC},
1760 ITEMPLATE_END
1761 };
1762
1763 static struct itemplate instrux_LODSB[] = {
1764 {I_LODSB, 0, {0,0,0}, "\1\xAC", IF_8086},
1765 ITEMPLATE_END
1766 };
1767
1768 static struct itemplate instrux_LODSD[] = {
1769 {I_LODSD, 0, {0,0,0}, "\321\1\xAD", IF_386},
1770 ITEMPLATE_END
1771 };
1772
1773 static struct itemplate instrux_LODSW[] = {
1774 {I_LODSW, 0, {0,0,0}, "\320\1\xAD", IF_8086},
1775 ITEMPLATE_END
1776 };
1777
1778 static struct itemplate instrux_LOOP[] = {
1779 {I_LOOP, 1, {IMMEDIATE,0,0}, "\312\1\xE2\50", IF_8086},
1780 {I_LOOP, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE2\50", IF_8086},
1781 {I_LOOP, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE2\50", IF_386},
1782 ITEMPLATE_END
1783 };
1784
1785 static struct itemplate instrux_LOOPE[] = {
1786 {I_LOOPE, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
1787 {I_LOOPE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
1788 {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
1789 ITEMPLATE_END
1790 };
1791
1792 static struct itemplate instrux_LOOPNE[] = {
1793 {I_LOOPNE, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
1794 {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
1795 {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
1796 ITEMPLATE_END
1797 };
1798
1799 static struct itemplate instrux_LOOPNZ[] = {
1800 {I_LOOPNZ, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
1801 {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
1802 {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
1803 ITEMPLATE_END
1804 };
1805
1806 static struct itemplate instrux_LOOPZ[] = {
1807 {I_LOOPZ, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
1808 {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
1809 {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
1810 ITEMPLATE_END
1811 };
1812
1813 static struct itemplate instrux_LSL[] = {
1814 {I_LSL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x03\110", IF_286|IF_PROT|IF_SM},
1815 {I_LSL, 2, {REG16,REG16,0}, "\320\2\x0F\x03\110", IF_286|IF_PROT},
1816 {I_LSL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x03\110", IF_386|IF_PROT|IF_SM},
1817 {I_LSL, 2, {REG32,REG32,0}, "\321\2\x0F\x03\110", IF_386|IF_PROT},
1818 ITEMPLATE_END
1819 };
1820
1821 static struct itemplate instrux_LSS[] = {
1822 {I_LSS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB2\110", IF_386},
1823 {I_LSS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB2\110", IF_386},
1824 ITEMPLATE_END
1825 };
1826
1827 static struct itemplate instrux_LTR[] = {
1828 {I_LTR, 1, {MEMORY,0,0}, "\300\1\x0F\17\203", IF_286|IF_PROT|IF_PRIV},
1829 {I_LTR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\203", IF_286|IF_PROT|IF_PRIV},
1830 {I_LTR, 1, {REG16,0,0}, "\1\x0F\17\203", IF_286|IF_PROT|IF_PRIV},
1831 ITEMPLATE_END
1832 };
1833
1834 static struct itemplate instrux_MASKMOVDQU[] = {
1835 {I_MASKMOVDQU, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF7\110", IF_WILLAMETTE|IF_SSE2},
1836 ITEMPLATE_END
1837 };
1838
1839 static struct itemplate instrux_MASKMOVQ[] = {
1840 {I_MASKMOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF7\110", IF_KATMAI|IF_MMX},
1841 ITEMPLATE_END
1842 };
1843
1844 static struct itemplate instrux_MAXPD[] = {
1845 {I_MAXPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5F\110", IF_WILLAMETTE|IF_SSE2},
1846 {I_MAXPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5F\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
1847 ITEMPLATE_END
1848 };
1849
1850 static struct itemplate instrux_MAXPS[] = {
1851 {I_MAXPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x5F\110", IF_KATMAI|IF_SSE},
1852 {I_MAXPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x5F\110", IF_KATMAI|IF_SSE},
1853 ITEMPLATE_END
1854 };
1855
1856 static struct itemplate instrux_MAXSD[] = {
1857 {I_MAXSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x5F\110", IF_WILLAMETTE|IF_SSE2},
1858 {I_MAXSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x5F\110", IF_WILLAMETTE|IF_SSE2},
1859 ITEMPLATE_END
1860 };
1861
1862 static struct itemplate instrux_MAXSS[] = {
1863 {I_MAXSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5F\110", IF_KATMAI|IF_SSE},
1864 {I_MAXSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5F\110", IF_KATMAI|IF_SSE},
1865 ITEMPLATE_END
1866 };
1867
1868 static struct itemplate instrux_MFENCE[] = {
1869 {I_MFENCE, 0, {0,0,0}, "\3\x0F\xAE\xF0", IF_WILLAMETTE|IF_SSE2},
1870 ITEMPLATE_END
1871 };
1872
1873 static struct itemplate instrux_MINPD[] = {
1874 {I_MINPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5D\110", IF_WILLAMETTE|IF_SSE2},
1875 {I_MINPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5D\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
1876 ITEMPLATE_END
1877 };
1878
1879 static struct itemplate instrux_MINPS[] = {
1880 {I_MINPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x5D\110", IF_KATMAI|IF_SSE},
1881 {I_MINPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x5D\110", IF_KATMAI|IF_SSE},
1882 ITEMPLATE_END
1883 };
1884
1885 static struct itemplate instrux_MINSD[] = {
1886 {I_MINSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x5D\110", IF_WILLAMETTE|IF_SSE2},
1887 {I_MINSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x5D\110", IF_WILLAMETTE|IF_SSE2},
1888 ITEMPLATE_END
1889 };
1890
1891 static struct itemplate instrux_MINSS[] = {
1892 {I_MINSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5D\110", IF_KATMAI|IF_SSE},
1893 {I_MINSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5D\110", IF_KATMAI|IF_SSE},
1894 ITEMPLATE_END
1895 };
1896
1897 static struct itemplate instrux_MONITOR[] = {
1898 {I_MONITOR, 0, {0,0,0}, "\3\x0F\x01\xC8", IF_PRESCOTT},
1899 {I_MONITOR, 3, {REG_EAX,REG_ECX,REG_EDX}, "\3\x0F\x01\xC8", IF_PRESCOTT},
1900 ITEMPLATE_END
1901 };
1902
1903 static struct itemplate instrux_MOV[] = {
1904 {I_MOV, 2, {MEMORY,REG_SREG,0}, "\300\1\x8C\101", IF_8086|IF_SM},
1905 {I_MOV, 2, {REG16,REG_SREG,0}, "\320\1\x8C\101", IF_8086},
1906 {I_MOV, 2, {REG32,REG_SREG,0}, "\321\1\x8C\101", IF_386},
1907 {I_MOV, 2, {REG_SREG,MEMORY,0}, "\301\1\x8E\110", IF_8086|IF_SM},
1908 {I_MOV, 2, {REG_SREG,REG16,0}, "\1\x8E\110", IF_8086},
1909 {I_MOV, 2, {REG_SREG,REG32,0}, "\1\x8E\110", IF_386},
1910 {I_MOV, 2, {REG_AL,MEM_OFFS,0}, "\301\1\xA0\45", IF_8086|IF_SM},
1911 {I_MOV, 2, {REG_AX,MEM_OFFS,0}, "\301\320\1\xA1\45", IF_8086|IF_SM},
1912 {I_MOV, 2, {REG_EAX,MEM_OFFS,0}, "\301\321\1\xA1\45", IF_386|IF_SM},
1913 {I_MOV, 2, {MEM_OFFS,REG_AL,0}, "\300\1\xA2\44", IF_8086|IF_SM},
1914 {I_MOV, 2, {MEM_OFFS,REG_AX,0}, "\300\320\1\xA3\44", IF_8086|IF_SM},
1915 {I_MOV, 2, {MEM_OFFS,REG_EAX,0}, "\300\321\1\xA3\44", IF_386|IF_SM},
1916 {I_MOV, 2, {REG32,REG_CREG,0}, "\2\x0F\x20\101", IF_386|IF_PRIV},
1917 {I_MOV, 2, {REG32,REG_DREG,0}, "\2\x0F\x21\101", IF_386|IF_PRIV},
1918 {I_MOV, 2, {REG32,REG_TREG,0}, "\2\x0F\x24\101", IF_386|IF_PRIV},
1919 {I_MOV, 2, {REG_CREG,REG32,0}, "\2\x0F\x22\110", IF_386|IF_PRIV},
1920 {I_MOV, 2, {REG_DREG,REG32,0}, "\2\x0F\x23\110", IF_386|IF_PRIV},
1921 {I_MOV, 2, {REG_TREG,REG32,0}, "\2\x0F\x26\110", IF_386|IF_PRIV},
1922 {I_MOV, 2, {MEMORY,REG8,0}, "\300\1\x88\101", IF_8086|IF_SM},
1923 {I_MOV, 2, {REG8,REG8,0}, "\1\x88\101", IF_8086},
1924 {I_MOV, 2, {MEMORY,REG16,0}, "\320\300\1\x89\101", IF_8086|IF_SM},
1925 {I_MOV, 2, {REG16,REG16,0}, "\320\1\x89\101", IF_8086},
1926 {I_MOV, 2, {MEMORY,REG32,0}, "\321\300\1\x89\101", IF_386|IF_SM},
1927 {I_MOV, 2, {REG32,REG32,0}, "\321\1\x89\101", IF_386},
1928 {I_MOV, 2, {REG8,MEMORY,0}, "\301\1\x8A\110", IF_8086|IF_SM},
1929 {I_MOV, 2, {REG8,REG8,0}, "\1\x8A\110", IF_8086},
1930 {I_MOV, 2, {REG16,MEMORY,0}, "\320\301\1\x8B\110", IF_8086|IF_SM},
1931 {I_MOV, 2, {REG16,REG16,0}, "\320\1\x8B\110", IF_8086},
1932 {I_MOV, 2, {REG32,MEMORY,0}, "\321\301\1\x8B\110", IF_386|IF_SM},
1933 {I_MOV, 2, {REG32,REG32,0}, "\321\1\x8B\110", IF_386},
1934 {I_MOV, 2, {REG8,IMMEDIATE,0}, "\10\xB0\21", IF_8086|IF_SM},
1935 {I_MOV, 2, {REG16,IMMEDIATE,0}, "\320\10\xB8\31", IF_8086|IF_SM},
1936 {I_MOV, 2, {REG32,IMMEDIATE,0}, "\321\10\xB8\41", IF_386|IF_SM},
1937 {I_MOV, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
1938 {I_MOV, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
1939 {I_MOV, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
1940 {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
1941 {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
1942 {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
1943 ITEMPLATE_END
1944 };
1945
1946 static struct itemplate instrux_MOVAPD[] = {
1947 {I_MOVAPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x28\110", IF_WILLAMETTE|IF_SSE2},
1948 {I_MOVAPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x29\110", IF_WILLAMETTE|IF_SSE2},
1949 {I_MOVAPD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x29\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
1950 {I_MOVAPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x28\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
1951 ITEMPLATE_END
1952 };
1953
1954 static struct itemplate instrux_MOVAPS[] = {
1955 {I_MOVAPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x28\110", IF_KATMAI|IF_SSE},
1956 {I_MOVAPS, 2, {MEMORY,XMMREG,0}, "\300\2\x0F\x29\101", IF_KATMAI|IF_SSE},
1957 {I_MOVAPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x28\110", IF_KATMAI|IF_SSE},
1958 {I_MOVAPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x29\101", IF_KATMAI|IF_SSE},
1959 ITEMPLATE_END
1960 };
1961
1962 static struct itemplate instrux_MOVD[] = {
1963 {I_MOVD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6E\110", IF_PENT|IF_MMX|IF_SD},
1964 {I_MOVD, 2, {MMXREG,REG32,0}, "\2\x0F\x6E\110", IF_PENT|IF_MMX},
1965 {I_MOVD, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7E\101", IF_PENT|IF_MMX|IF_SD},
1966 {I_MOVD, 2, {REG32,MMXREG,0}, "\2\x0F\x7E\101", IF_PENT|IF_MMX},
1967 {I_MOVD, 2, {XMMREG,REG32,0}, "\3\x66\x0F\x6E\110", IF_WILLAMETTE|IF_SSE2},
1968 {I_MOVD, 2, {REG32,XMMREG,0}, "\3\x66\x0F\x7E\101", IF_WILLAMETTE|IF_SSE2},
1969 {I_MOVD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x7E\101", IF_WILLAMETTE|IF_SSE2},
1970 {I_MOVD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6E\110", IF_WILLAMETTE|IF_SSE2},
1971 ITEMPLATE_END
1972 };
1973
1974 static struct itemplate instrux_MOVDDUP[] = {
1975 {I_MOVDDUP, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x12\110", IF_PRESCOTT|IF_SSE3},
1976 {I_MOVDDUP, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x12\110", IF_PRESCOTT|IF_SSE3},
1977 ITEMPLATE_END
1978 };
1979
1980 static struct itemplate instrux_MOVDQ2Q[] = {
1981 {I_MOVDQ2Q, 2, {MMXREG,XMMREG,0}, "\3\xF2\x0F\xD6\110", IF_WILLAMETTE|IF_SSE2},
1982 ITEMPLATE_END
1983 };
1984
1985 static struct itemplate instrux_MOVDQA[] = {
1986 {I_MOVDQA, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x6F\110", IF_WILLAMETTE|IF_SSE2},
1987 {I_MOVDQA, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x7F\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
1988 {I_MOVDQA, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6F\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
1989 {I_MOVDQA, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x7F\110", IF_WILLAMETTE|IF_SSE2},
1990 ITEMPLATE_END
1991 };
1992
1993 static struct itemplate instrux_MOVDQU[] = {
1994 {I_MOVDQU, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x6F\110", IF_WILLAMETTE|IF_SSE2},
1995 {I_MOVDQU, 2, {MEMORY,XMMREG,0}, "\333\300\2\x0F\x7F\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
1996 {I_MOVDQU, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x6F\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
1997 {I_MOVDQU, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x7F\110", IF_WILLAMETTE|IF_SSE2},
1998 ITEMPLATE_END
1999 };
2000
2001 static struct itemplate instrux_MOVHLPS[] = {
2002 {I_MOVHLPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x12\110", IF_KATMAI|IF_SSE},
2003 ITEMPLATE_END
2004 };
2005
2006 static struct itemplate instrux_MOVHPD[] = {
2007 {I_MOVHPD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x17\101", IF_WILLAMETTE|IF_SSE2},
2008 {I_MOVHPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x16\110", IF_WILLAMETTE|IF_SSE2},
2009 ITEMPLATE_END
2010 };
2011
2012 static struct itemplate instrux_MOVHPS[] = {
2013 {I_MOVHPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x16\110", IF_KATMAI|IF_SSE},
2014 {I_MOVHPS, 2, {MEMORY,XMMREG,0}, "\300\2\x0F\x17\101", IF_KATMAI|IF_SSE},
2015 ITEMPLATE_END
2016 };
2017
2018 static struct itemplate instrux_MOVLHPS[] = {
2019 {I_MOVLHPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x16\110", IF_KATMAI|IF_SSE},
2020 ITEMPLATE_END
2021 };
2022
2023 static struct itemplate instrux_MOVLPD[] = {
2024 {I_MOVLPD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x13\101", IF_WILLAMETTE|IF_SSE2},
2025 {I_MOVLPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x12\110", IF_WILLAMETTE|IF_SSE2},
2026 ITEMPLATE_END
2027 };
2028
2029 static struct itemplate instrux_MOVLPS[] = {
2030 {I_MOVLPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x12\110", IF_KATMAI|IF_SSE},
2031 {I_MOVLPS, 2, {MEMORY,XMMREG,0}, "\300\2\x0F\x13\101", IF_KATMAI|IF_SSE},
2032 ITEMPLATE_END
2033 };
2034
2035 static struct itemplate instrux_MOVMSKPD[] = {
2036 {I_MOVMSKPD, 2, {REG32,XMMREG,0}, "\3\x66\x0F\x50\110", IF_WILLAMETTE|IF_SSE2},
2037 ITEMPLATE_END
2038 };
2039
2040 static struct itemplate instrux_MOVMSKPS[] = {
2041 {I_MOVMSKPS, 2, {REG32,XMMREG,0}, "\2\x0F\x50\110", IF_KATMAI|IF_SSE},
2042 ITEMPLATE_END
2043 };
2044
2045 static struct itemplate instrux_MOVNTDQ[] = {
2046 {I_MOVNTDQ, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\xE7\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
2047 ITEMPLATE_END
2048 };
2049
2050 static struct itemplate instrux_MOVNTI[] = {
2051 {I_MOVNTI, 2, {MEMORY,REG32,0}, "\300\2\x0F\xC3\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
2052 ITEMPLATE_END
2053 };
2054
2055 static struct itemplate instrux_MOVNTPD[] = {
2056 {I_MOVNTPD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x2B\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
2057 ITEMPLATE_END
2058 };
2059
2060 static struct itemplate instrux_MOVNTPS[] = {
2061 {I_MOVNTPS, 2, {MEMORY,XMMREG,0}, "\300\2\x0F\x2B\101", IF_KATMAI|IF_SSE},
2062 ITEMPLATE_END
2063 };
2064
2065 static struct itemplate instrux_MOVNTQ[] = {
2066 {I_MOVNTQ, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\xE7\101", IF_KATMAI|IF_MMX|IF_SM},
2067 ITEMPLATE_END
2068 };
2069
2070 static struct itemplate instrux_MOVQ[] = {
2071 {I_MOVQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6F\110", IF_PENT|IF_MMX|IF_SM},
2072 {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6F\110", IF_PENT|IF_MMX},
2073 {I_MOVQ, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7F\101", IF_PENT|IF_MMX|IF_SM},
2074 {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x7F\101", IF_PENT|IF_MMX},
2075 {I_MOVQ, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x7E\110", IF_WILLAMETTE|IF_SSE2},
2076 {I_MOVQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD6\110", IF_WILLAMETTE|IF_SSE2},
2077 {I_MOVQ, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\xD6\101", IF_WILLAMETTE|IF_SSE2},
2078 {I_MOVQ, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x7E\110", IF_WILLAMETTE|IF_SSE2},
2079 ITEMPLATE_END
2080 };
2081
2082 static struct itemplate instrux_MOVQ2DQ[] = {
2083 {I_MOVQ2DQ, 2, {XMMREG,MMXREG,0}, "\333\2\x0F\xD6\110", IF_WILLAMETTE|IF_SSE2},
2084 ITEMPLATE_END
2085 };
2086
2087 static struct itemplate instrux_MOVSB[] = {
2088 {I_MOVSB, 0, {0,0,0}, "\1\xA4", IF_8086},
2089 ITEMPLATE_END
2090 };
2091
2092 static struct itemplate instrux_MOVSD[] = {
2093 {I_MOVSD, 0, {0,0,0}, "\321\1\xA5", IF_386},
2094 {I_MOVSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x10\110", IF_WILLAMETTE|IF_SSE2},
2095 {I_MOVSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x11\110", IF_WILLAMETTE|IF_SSE2},
2096 {I_MOVSD, 2, {MEMORY,XMMREG,0}, "\300\3\xF2\x0F\x11\101", IF_WILLAMETTE|IF_SSE2},
2097 {I_MOVSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x10\110", IF_WILLAMETTE|IF_SSE2},
2098 ITEMPLATE_END
2099 };
2100
2101 static struct itemplate instrux_MOVSHDUP[] = {
2102 {I_MOVSHDUP, 2, {XMMREG,MEMORY,0}, "\301\3\xF3\x0F\x16\110", IF_PRESCOTT|IF_SSE3},
2103 {I_MOVSHDUP, 2, {XMMREG,XMMREG,0}, "\3\xF3\x0F\x16\110", IF_PRESCOTT|IF_SSE3},
2104 ITEMPLATE_END
2105 };
2106
2107 static struct itemplate instrux_MOVSLDUP[] = {
2108 {I_MOVSLDUP, 2, {XMMREG,MEMORY,0}, "\301\3\xF3\x0F\x12\110", IF_PRESCOTT|IF_SSE3},
2109 {I_MOVSLDUP, 2, {XMMREG,XMMREG,0}, "\3\xF3\x0F\x12\110", IF_PRESCOTT|IF_SSE3},
2110 ITEMPLATE_END
2111 };
2112
2113 static struct itemplate instrux_MOVSS[] = {
2114 {I_MOVSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x10\110", IF_KATMAI|IF_SSE},
2115 {I_MOVSS, 2, {MEMORY,XMMREG,0}, "\300\333\2\x0F\x11\101", IF_KATMAI|IF_SSE},
2116 {I_MOVSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x10\110", IF_KATMAI|IF_SSE},
2117 {I_MOVSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x11\101", IF_KATMAI|IF_SSE},
2118 ITEMPLATE_END
2119 };
2120
2121 static struct itemplate instrux_MOVSW[] = {
2122 {I_MOVSW, 0, {0,0,0}, "\320\1\xA5", IF_8086},
2123 ITEMPLATE_END
2124 };
2125
2126 static struct itemplate instrux_MOVSX[] = {
2127 {I_MOVSX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBE\110", IF_386|IF_SB},
2128 {I_MOVSX, 2, {REG16,REG8,0}, "\320\2\x0F\xBE\110", IF_386},
2129 {I_MOVSX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xBE\110", IF_386},
2130 {I_MOVSX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xBF\110", IF_386},
2131 ITEMPLATE_END
2132 };
2133
2134 static struct itemplate instrux_MOVUPD[] = {
2135 {I_MOVUPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x10\110", IF_WILLAMETTE|IF_SSE2},
2136 {I_MOVUPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x11\110", IF_WILLAMETTE|IF_SSE2},
2137 {I_MOVUPD, 2, {MEMORY,XMMREG,0}, "\300\3\x66\x0F\x11\101", IF_WILLAMETTE|IF_SSE2|IF_SM},
2138 {I_MOVUPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x10\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2139 ITEMPLATE_END
2140 };
2141
2142 static struct itemplate instrux_MOVUPS[] = {
2143 {I_MOVUPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x10\110", IF_KATMAI|IF_SSE},
2144 {I_MOVUPS, 2, {MEMORY,XMMREG,0}, "\300\331\2\x0F\x11\101", IF_KATMAI|IF_SSE},
2145 {I_MOVUPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x10\110", IF_KATMAI|IF_SSE},
2146 {I_MOVUPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x11\101", IF_KATMAI|IF_SSE},
2147 ITEMPLATE_END
2148 };
2149
2150 static struct itemplate instrux_MOVZX[] = {
2151 {I_MOVZX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB6\110", IF_386|IF_SB},
2152 {I_MOVZX, 2, {REG16,REG8,0}, "\320\2\x0F\xB6\110", IF_386},
2153 {I_MOVZX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xB6\110", IF_386},
2154 {I_MOVZX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xB7\110", IF_386},
2155 ITEMPLATE_END
2156 };
2157
2158 static struct itemplate instrux_MUL[] = {
2159 {I_MUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\204", IF_8086},
2160 {I_MUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\204", IF_8086},
2161 {I_MUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\204", IF_386},
2162 ITEMPLATE_END
2163 };
2164
2165 static struct itemplate instrux_MULPD[] = {
2166 {I_MULPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x59\110", IF_WILLAMETTE|IF_SSE2},
2167 {I_MULPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x59\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2168 ITEMPLATE_END
2169 };
2170
2171 static struct itemplate instrux_MULPS[] = {
2172 {I_MULPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x59\110", IF_KATMAI|IF_SSE},
2173 {I_MULPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x59\110", IF_KATMAI|IF_SSE},
2174 ITEMPLATE_END
2175 };
2176
2177 static struct itemplate instrux_MULSD[] = {
2178 {I_MULSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x59\110", IF_WILLAMETTE|IF_SSE2},
2179 {I_MULSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x59\110", IF_WILLAMETTE|IF_SSE2},
2180 ITEMPLATE_END
2181 };
2182
2183 static struct itemplate instrux_MULSS[] = {
2184 {I_MULSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x59\110", IF_KATMAI|IF_SSE},
2185 {I_MULSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x59\110", IF_KATMAI|IF_SSE},
2186 ITEMPLATE_END
2187 };
2188
2189 static struct itemplate instrux_MWAIT[] = {
2190 {I_MWAIT, 0, {0,0,0}, "\3\x0F\x01\xC9", IF_PRESCOTT},
2191 {I_MWAIT, 2, {REG_EAX,REG_ECX,0}, "\3\x0F\x01\xC9", IF_PRESCOTT},
2192 ITEMPLATE_END
2193 };
2194
2195 static struct itemplate instrux_NEG[] = {
2196 {I_NEG, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\203", IF_8086},
2197 {I_NEG, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\203", IF_8086},
2198 {I_NEG, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\203", IF_386},
2199 ITEMPLATE_END
2200 };
2201
2202 static struct itemplate instrux_NOP[] = {
2203 {I_NOP, 0, {0,0,0}, "\1\x90", IF_8086},
2204 ITEMPLATE_END
2205 };
2206
2207 static struct itemplate instrux_NOT[] = {
2208 {I_NOT, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\202", IF_8086},
2209 {I_NOT, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\202", IF_8086},
2210 {I_NOT, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\202", IF_386},
2211 ITEMPLATE_END
2212 };
2213
2214 static struct itemplate instrux_OR[] = {
2215 {I_OR, 2, {MEMORY,REG8,0}, "\300\1\x08\101", IF_8086|IF_SM},
2216 {I_OR, 2, {REG8,REG8,0}, "\1\x08\101", IF_8086},
2217 {I_OR, 2, {MEMORY,REG16,0}, "\320\300\1\x09\101", IF_8086|IF_SM},
2218 {I_OR, 2, {REG16,REG16,0}, "\320\1\x09\101", IF_8086},
2219 {I_OR, 2, {MEMORY,REG32,0}, "\321\300\1\x09\101", IF_386|IF_SM},
2220 {I_OR, 2, {REG32,REG32,0}, "\321\1\x09\101", IF_386},
2221 {I_OR, 2, {REG8,MEMORY,0}, "\301\1\x0A\110", IF_8086|IF_SM},
2222 {I_OR, 2, {REG8,REG8,0}, "\1\x0A\110", IF_8086},
2223 {I_OR, 2, {REG16,MEMORY,0}, "\320\301\1\x0B\110", IF_8086|IF_SM},
2224 {I_OR, 2, {REG16,REG16,0}, "\320\1\x0B\110", IF_8086},
2225 {I_OR, 2, {REG32,MEMORY,0}, "\321\301\1\x0B\110", IF_386|IF_SM},
2226 {I_OR, 2, {REG32,REG32,0}, "\321\1\x0B\110", IF_386},
2227 {I_OR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\201\15", IF_8086},
2228 {I_OR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\201\15", IF_386},
2229 {I_OR, 2, {REG_AL,IMMEDIATE,0}, "\1\x0C\21", IF_8086|IF_SM},
2230 {I_OR, 2, {REG_AX,SBYTE,0}, "\320\1\x83\201\15", IF_8086|IF_SM},
2231 {I_OR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x0D\31", IF_8086|IF_SM},
2232 {I_OR, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\201\15", IF_386|IF_SM},
2233 {I_OR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x0D\41", IF_386|IF_SM},
2234 {I_OR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
2235 {I_OR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\201\131", IF_8086|IF_SM},
2236 {I_OR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\201\141", IF_386|IF_SM},
2237 {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
2238 {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\201\131", IF_8086|IF_SM},
2239 {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\201\141", IF_386|IF_SM},
2240 ITEMPLATE_END
2241 };
2242
2243 static struct itemplate instrux_ORPD[] = {
2244 {I_ORPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x56\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2245 {I_ORPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x56\110", IF_WILLAMETTE|IF_SSE2},
2246 ITEMPLATE_END
2247 };
2248
2249 static struct itemplate instrux_ORPS[] = {
2250 {I_ORPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x56\110", IF_KATMAI|IF_SSE},
2251 {I_ORPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x56\110", IF_KATMAI|IF_SSE},
2252 ITEMPLATE_END
2253 };
2254
2255 static struct itemplate instrux_OUT[] = {
2256 {I_OUT, 2, {IMMEDIATE,REG_AL,0}, "\1\xE6\24", IF_8086|IF_SB},
2257 {I_OUT, 2, {IMMEDIATE,REG_AX,0}, "\320\1\xE7\24", IF_8086|IF_SB},
2258 {I_OUT, 2, {IMMEDIATE,REG_EAX,0}, "\321\1\xE7\24", IF_386|IF_SB},
2259 {I_OUT, 2, {REG_DX,REG_AL,0}, "\1\xEE", IF_8086},
2260 {I_OUT, 2, {REG_DX,REG_AX,0}, "\320\1\xEF", IF_8086},
2261 {I_OUT, 2, {REG_DX,REG_EAX,0}, "\321\1\xEF", IF_386},
2262 ITEMPLATE_END
2263 };
2264
2265 static struct itemplate instrux_OUTSB[] = {
2266 {I_OUTSB, 0, {0,0,0}, "\1\x6E", IF_186},
2267 ITEMPLATE_END
2268 };
2269
2270 static struct itemplate instrux_OUTSD[] = {
2271 {I_OUTSD, 0, {0,0,0}, "\321\1\x6F", IF_386},
2272 ITEMPLATE_END
2273 };
2274
2275 static struct itemplate instrux_OUTSW[] = {
2276 {I_OUTSW, 0, {0,0,0}, "\320\1\x6F", IF_186},
2277 ITEMPLATE_END
2278 };
2279
2280 static struct itemplate instrux_PACKSSDW[] = {
2281 {I_PACKSSDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6B\110", IF_PENT|IF_MMX|IF_SM},
2282 {I_PACKSSDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6B\110", IF_PENT|IF_MMX},
2283 {I_PACKSSDW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x6B\110", IF_WILLAMETTE|IF_SSE2},
2284 {I_PACKSSDW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6B\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2285 ITEMPLATE_END
2286 };
2287
2288 static struct itemplate instrux_PACKSSWB[] = {
2289 {I_PACKSSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x63\110", IF_PENT|IF_MMX|IF_SM},
2290 {I_PACKSSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x63\110", IF_PENT|IF_MMX},
2291 {I_PACKSSWB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x63\110", IF_WILLAMETTE|IF_SSE2},
2292 {I_PACKSSWB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x63\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2293 ITEMPLATE_END
2294 };
2295
2296 static struct itemplate instrux_PACKUSWB[] = {
2297 {I_PACKUSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x67\110", IF_PENT|IF_MMX|IF_SM},
2298 {I_PACKUSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x67\110", IF_PENT|IF_MMX},
2299 {I_PACKUSWB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x67\110", IF_WILLAMETTE|IF_SSE2},
2300 {I_PACKUSWB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x67\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2301 ITEMPLATE_END
2302 };
2303
2304 static struct itemplate instrux_PADDB[] = {
2305 {I_PADDB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFC\110", IF_PENT|IF_MMX|IF_SM},
2306 {I_PADDB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFC\110", IF_PENT|IF_MMX},
2307 {I_PADDB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xFC\110", IF_WILLAMETTE|IF_SSE2},
2308 {I_PADDB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xFC\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2309 ITEMPLATE_END
2310 };
2311
2312 static struct itemplate instrux_PADDD[] = {
2313 {I_PADDD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFE\110", IF_PENT|IF_MMX|IF_SM},
2314 {I_PADDD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFE\110", IF_PENT|IF_MMX},
2315 {I_PADDD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xFE\110", IF_WILLAMETTE|IF_SSE2},
2316 {I_PADDD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xFE\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2317 ITEMPLATE_END
2318 };
2319
2320 static struct itemplate instrux_PADDQ[] = {
2321 {I_PADDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD4\110", IF_WILLAMETTE|IF_SSE2},
2322 {I_PADDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD4\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2323 {I_PADDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD4\110", IF_WILLAMETTE|IF_SSE2},
2324 {I_PADDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD4\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2325 ITEMPLATE_END
2326 };
2327
2328 static struct itemplate instrux_PADDSB[] = {
2329 {I_PADDSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEC\110", IF_PENT|IF_MMX|IF_SM},
2330 {I_PADDSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEC\110", IF_PENT|IF_MMX},
2331 {I_PADDSB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xEC\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2332 {I_PADDSB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xEC\110", IF_WILLAMETTE|IF_SSE2},
2333 ITEMPLATE_END
2334 };
2335
2336 static struct itemplate instrux_PADDSIW[] = {
2337 {I_PADDSIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x51\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2338 {I_PADDSIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x51\110", IF_PENT|IF_MMX|IF_CYRIX},
2339 ITEMPLATE_END
2340 };
2341
2342 static struct itemplate instrux_PADDSW[] = {
2343 {I_PADDSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xED\110", IF_PENT|IF_MMX|IF_SM},
2344 {I_PADDSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xED\110", IF_PENT|IF_MMX},
2345 {I_PADDSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xED\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2346 {I_PADDSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xED\110", IF_WILLAMETTE|IF_SSE2},
2347 ITEMPLATE_END
2348 };
2349
2350 static struct itemplate instrux_PADDUSB[] = {
2351 {I_PADDUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDC\110", IF_PENT|IF_MMX|IF_SM},
2352 {I_PADDUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDC\110", IF_PENT|IF_MMX},
2353 {I_PADDUSB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDC\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2354 {I_PADDUSB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDC\110", IF_WILLAMETTE|IF_SSE2},
2355 ITEMPLATE_END
2356 };
2357
2358 static struct itemplate instrux_PADDUSW[] = {
2359 {I_PADDUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDD\110", IF_PENT|IF_MMX|IF_SM},
2360 {I_PADDUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDD\110", IF_PENT|IF_MMX},
2361 {I_PADDUSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDD\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2362 {I_PADDUSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDD\110", IF_WILLAMETTE|IF_SSE2},
2363 ITEMPLATE_END
2364 };
2365
2366 static struct itemplate instrux_PADDW[] = {
2367 {I_PADDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFD\110", IF_PENT|IF_MMX|IF_SM},
2368 {I_PADDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFD\110", IF_PENT|IF_MMX},
2369 {I_PADDW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xFD\110", IF_WILLAMETTE|IF_SSE2},
2370 {I_PADDW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xFD\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2371 ITEMPLATE_END
2372 };
2373
2374 static struct itemplate instrux_PAND[] = {
2375 {I_PAND, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDB\110", IF_PENT|IF_MMX|IF_SM},
2376 {I_PAND, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDB\110", IF_PENT|IF_MMX},
2377 {I_PAND, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDB\110", IF_WILLAMETTE|IF_SSE2},
2378 {I_PAND, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDB\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2379 ITEMPLATE_END
2380 };
2381
2382 static struct itemplate instrux_PANDN[] = {
2383 {I_PANDN, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDF\110", IF_PENT|IF_MMX|IF_SM},
2384 {I_PANDN, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDF\110", IF_PENT|IF_MMX},
2385 {I_PANDN, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDF\110", IF_WILLAMETTE|IF_SSE2},
2386 {I_PANDN, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDF\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2387 ITEMPLATE_END
2388 };
2389
2390 static struct itemplate instrux_PAUSE[] = {
2391 {I_PAUSE, 0, {0,0,0}, "\333\1\x90", IF_WILLAMETTE|IF_SSE2},
2392 ITEMPLATE_END
2393 };
2394
2395 static struct itemplate instrux_PAVEB[] = {
2396 {I_PAVEB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x50\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2397 {I_PAVEB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x50\110", IF_PENT|IF_MMX|IF_CYRIX},
2398 ITEMPLATE_END
2399 };
2400
2401 static struct itemplate instrux_PAVGB[] = {
2402 {I_PAVGB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE0\110", IF_KATMAI|IF_MMX},
2403 {I_PAVGB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE0\110", IF_KATMAI|IF_MMX|IF_SM},
2404 {I_PAVGB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE0\110", IF_WILLAMETTE|IF_SSE2},
2405 {I_PAVGB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE0\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2406 ITEMPLATE_END
2407 };
2408
2409 static struct itemplate instrux_PAVGUSB[] = {
2410 {I_PAVGUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xBF", IF_PENT|IF_3DNOW|IF_SM},
2411 {I_PAVGUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xBF", IF_PENT|IF_3DNOW},
2412 ITEMPLATE_END
2413 };
2414
2415 static struct itemplate instrux_PAVGW[] = {
2416 {I_PAVGW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE3\110", IF_KATMAI|IF_MMX},
2417 {I_PAVGW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE3\110", IF_KATMAI|IF_MMX|IF_SM},
2418 {I_PAVGW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE3\110", IF_WILLAMETTE|IF_SSE2},
2419 {I_PAVGW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE3\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2420 ITEMPLATE_END
2421 };
2422
2423 static struct itemplate instrux_PCMPEQB[] = {
2424 {I_PCMPEQB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x74\110", IF_PENT|IF_MMX|IF_SM},
2425 {I_PCMPEQB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x74\110", IF_PENT|IF_MMX},
2426 {I_PCMPEQB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x74\110", IF_WILLAMETTE|IF_SSE2},
2427 {I_PCMPEQB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x74\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2428 ITEMPLATE_END
2429 };
2430
2431 static struct itemplate instrux_PCMPEQD[] = {
2432 {I_PCMPEQD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x76\110", IF_PENT|IF_MMX|IF_SM},
2433 {I_PCMPEQD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x76\110", IF_PENT|IF_MMX},
2434 {I_PCMPEQD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x76\110", IF_WILLAMETTE|IF_SSE2},
2435 {I_PCMPEQD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x76\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2436 ITEMPLATE_END
2437 };
2438
2439 static struct itemplate instrux_PCMPEQW[] = {
2440 {I_PCMPEQW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x75\110", IF_PENT|IF_MMX|IF_SM},
2441 {I_PCMPEQW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x75\110", IF_PENT|IF_MMX},
2442 {I_PCMPEQW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x75\110", IF_WILLAMETTE|IF_SSE2},
2443 {I_PCMPEQW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x75\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2444 ITEMPLATE_END
2445 };
2446
2447 static struct itemplate instrux_PCMPGTB[] = {
2448 {I_PCMPGTB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x64\110", IF_PENT|IF_MMX|IF_SM},
2449 {I_PCMPGTB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x64\110", IF_PENT|IF_MMX},
2450 {I_PCMPGTB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x64\110", IF_WILLAMETTE|IF_SSE2},
2451 {I_PCMPGTB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x64\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2452 ITEMPLATE_END
2453 };
2454
2455 static struct itemplate instrux_PCMPGTD[] = {
2456 {I_PCMPGTD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x66\110", IF_PENT|IF_MMX|IF_SM},
2457 {I_PCMPGTD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x66\110", IF_PENT|IF_MMX},
2458 {I_PCMPGTD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x66\110", IF_WILLAMETTE|IF_SSE2},
2459 {I_PCMPGTD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x66\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2460 ITEMPLATE_END
2461 };
2462
2463 static struct itemplate instrux_PCMPGTW[] = {
2464 {I_PCMPGTW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x65\110", IF_PENT|IF_MMX|IF_SM},
2465 {I_PCMPGTW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x65\110", IF_PENT|IF_MMX},
2466 {I_PCMPGTW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x65\110", IF_WILLAMETTE|IF_SSE2},
2467 {I_PCMPGTW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x65\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2468 ITEMPLATE_END
2469 };
2470
2471 static struct itemplate instrux_PDISTIB[] = {
2472 {I_PDISTIB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x54\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2473 ITEMPLATE_END
2474 };
2475
2476 static struct itemplate instrux_PEXTRW[] = {
2477 {I_PEXTRW, 3, {REG32,MMXREG,IMMEDIATE}, "\2\x0F\xC5\110\26", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2478 {I_PEXTRW, 3, {REG32,XMMREG,IMMEDIATE}, "\3\x66\x0F\xC5\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2479 ITEMPLATE_END
2480 };
2481
2482 static struct itemplate instrux_PF2ID[] = {
2483 {I_PF2ID, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x1D", IF_PENT|IF_3DNOW|IF_SM},
2484 {I_PF2ID, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x1D", IF_PENT|IF_3DNOW},
2485 ITEMPLATE_END
2486 };
2487
2488 static struct itemplate instrux_PF2IW[] = {
2489 {I_PF2IW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x1C", IF_PENT|IF_3DNOW|IF_SM},
2490 {I_PF2IW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x1C", IF_PENT|IF_3DNOW},
2491 ITEMPLATE_END
2492 };
2493
2494 static struct itemplate instrux_PFACC[] = {
2495 {I_PFACC, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xAE", IF_PENT|IF_3DNOW|IF_SM},
2496 {I_PFACC, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xAE", IF_PENT|IF_3DNOW},
2497 ITEMPLATE_END
2498 };
2499
2500 static struct itemplate instrux_PFADD[] = {
2501 {I_PFADD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x9E", IF_PENT|IF_3DNOW|IF_SM},
2502 {I_PFADD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x9E", IF_PENT|IF_3DNOW},
2503 ITEMPLATE_END
2504 };
2505
2506 static struct itemplate instrux_PFCMPEQ[] = {
2507 {I_PFCMPEQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xB0", IF_PENT|IF_3DNOW|IF_SM},
2508 {I_PFCMPEQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xB0", IF_PENT|IF_3DNOW},
2509 ITEMPLATE_END
2510 };
2511
2512 static struct itemplate instrux_PFCMPGE[] = {
2513 {I_PFCMPGE, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x90", IF_PENT|IF_3DNOW|IF_SM},
2514 {I_PFCMPGE, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x90", IF_PENT|IF_3DNOW},
2515 ITEMPLATE_END
2516 };
2517
2518 static struct itemplate instrux_PFCMPGT[] = {
2519 {I_PFCMPGT, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xA0", IF_PENT|IF_3DNOW|IF_SM},
2520 {I_PFCMPGT, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xA0", IF_PENT|IF_3DNOW},
2521 ITEMPLATE_END
2522 };
2523
2524 static struct itemplate instrux_PFMAX[] = {
2525 {I_PFMAX, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xA4", IF_PENT|IF_3DNOW|IF_SM},
2526 {I_PFMAX, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xA4", IF_PENT|IF_3DNOW},
2527 ITEMPLATE_END
2528 };
2529
2530 static struct itemplate instrux_PFMIN[] = {
2531 {I_PFMIN, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x94", IF_PENT|IF_3DNOW|IF_SM},
2532 {I_PFMIN, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x94", IF_PENT|IF_3DNOW},
2533 ITEMPLATE_END
2534 };
2535
2536 static struct itemplate instrux_PFMUL[] = {
2537 {I_PFMUL, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xB4", IF_PENT|IF_3DNOW|IF_SM},
2538 {I_PFMUL, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xB4", IF_PENT|IF_3DNOW},
2539 ITEMPLATE_END
2540 };
2541
2542 static struct itemplate instrux_PFNACC[] = {
2543 {I_PFNACC, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x8A", IF_PENT|IF_3DNOW|IF_SM},
2544 {I_PFNACC, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x8A", IF_PENT|IF_3DNOW},
2545 ITEMPLATE_END
2546 };
2547
2548 static struct itemplate instrux_PFPNACC[] = {
2549 {I_PFPNACC, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x8E", IF_PENT|IF_3DNOW|IF_SM},
2550 {I_PFPNACC, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x8E", IF_PENT|IF_3DNOW},
2551 ITEMPLATE_END
2552 };
2553
2554 static struct itemplate instrux_PFRCP[] = {
2555 {I_PFRCP, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x96", IF_PENT|IF_3DNOW|IF_SM},
2556 {I_PFRCP, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x96", IF_PENT|IF_3DNOW},
2557 ITEMPLATE_END
2558 };
2559
2560 static struct itemplate instrux_PFRCPIT1[] = {
2561 {I_PFRCPIT1, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xA6", IF_PENT|IF_3DNOW|IF_SM},
2562 {I_PFRCPIT1, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xA6", IF_PENT|IF_3DNOW},
2563 ITEMPLATE_END
2564 };
2565
2566 static struct itemplate instrux_PFRCPIT2[] = {
2567 {I_PFRCPIT2, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xB6", IF_PENT|IF_3DNOW|IF_SM},
2568 {I_PFRCPIT2, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xB6", IF_PENT|IF_3DNOW},
2569 ITEMPLATE_END
2570 };
2571
2572 static struct itemplate instrux_PFRSQIT1[] = {
2573 {I_PFRSQIT1, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xA7", IF_PENT|IF_3DNOW|IF_SM},
2574 {I_PFRSQIT1, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xA7", IF_PENT|IF_3DNOW},
2575 ITEMPLATE_END
2576 };
2577
2578 static struct itemplate instrux_PFRSQRT[] = {
2579 {I_PFRSQRT, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x97", IF_PENT|IF_3DNOW|IF_SM},
2580 {I_PFRSQRT, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x97", IF_PENT|IF_3DNOW},
2581 ITEMPLATE_END
2582 };
2583
2584 static struct itemplate instrux_PFSUB[] = {
2585 {I_PFSUB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x9A", IF_PENT|IF_3DNOW|IF_SM},
2586 {I_PFSUB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x9A", IF_PENT|IF_3DNOW},
2587 ITEMPLATE_END
2588 };
2589
2590 static struct itemplate instrux_PFSUBR[] = {
2591 {I_PFSUBR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xAA", IF_PENT|IF_3DNOW|IF_SM},
2592 {I_PFSUBR, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xAA", IF_PENT|IF_3DNOW},
2593 ITEMPLATE_END
2594 };
2595
2596 static struct itemplate instrux_PI2FD[] = {
2597 {I_PI2FD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x0D", IF_PENT|IF_3DNOW|IF_SM},
2598 {I_PI2FD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x0D", IF_PENT|IF_3DNOW},
2599 ITEMPLATE_END
2600 };
2601
2602 static struct itemplate instrux_PI2FW[] = {
2603 {I_PI2FW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\x0C", IF_PENT|IF_3DNOW|IF_SM},
2604 {I_PI2FW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\x0C", IF_PENT|IF_3DNOW},
2605 ITEMPLATE_END
2606 };
2607
2608 static struct itemplate instrux_PINSRW[] = {
2609 {I_PINSRW, 3, {MMXREG,REG16,IMMEDIATE}, "\2\x0F\xC4\110\26", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2610 {I_PINSRW, 3, {MMXREG,REG32,IMMEDIATE}, "\2\x0F\xC4\110\26", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2611 {I_PINSRW, 3, {MMXREG,MEMORY,IMMEDIATE}, "\301\2\x0F\xC4\110\26", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2612 {I_PINSRW, 3, {MMXREG,MEMORY|BITS16,IMMEDIATE}, "\301\2\x0F\xC4\110\26", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2613 {I_PINSRW, 3, {XMMREG,REG16,IMMEDIATE}, "\3\x66\x0F\xC4\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2614 {I_PINSRW, 3, {XMMREG,REG32,IMMEDIATE}, "\3\x66\x0F\xC4\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2615 {I_PINSRW, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\3\x66\x0F\xC4\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2616 {I_PINSRW, 3, {XMMREG,MEMORY|BITS16,IMMEDIATE}, "\301\3\x66\x0F\xC4\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2617 ITEMPLATE_END
2618 };
2619
2620 static struct itemplate instrux_PMACHRIW[] = {
2621 {I_PMACHRIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5E\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2622 ITEMPLATE_END
2623 };
2624
2625 static struct itemplate instrux_PMADDWD[] = {
2626 {I_PMADDWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF5\110", IF_PENT|IF_MMX|IF_SM},
2627 {I_PMADDWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF5\110", IF_PENT|IF_MMX},
2628 {I_PMADDWD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF5\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2629 {I_PMADDWD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF5\110", IF_WILLAMETTE|IF_SSE2},
2630 ITEMPLATE_END
2631 };
2632
2633 static struct itemplate instrux_PMAGW[] = {
2634 {I_PMAGW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x52\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2635 {I_PMAGW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x52\110", IF_PENT|IF_MMX|IF_CYRIX},
2636 ITEMPLATE_END
2637 };
2638
2639 static struct itemplate instrux_PMAXSW[] = {
2640 {I_PMAXSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEE\110", IF_KATMAI|IF_MMX},
2641 {I_PMAXSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEE\110", IF_KATMAI|IF_MMX|IF_SM},
2642 {I_PMAXSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xEE\110", IF_WILLAMETTE|IF_SSE2},
2643 {I_PMAXSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xEE\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2644 ITEMPLATE_END
2645 };
2646
2647 static struct itemplate instrux_PMAXUB[] = {
2648 {I_PMAXUB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDE\110", IF_KATMAI|IF_MMX},
2649 {I_PMAXUB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDE\110", IF_KATMAI|IF_MMX|IF_SM},
2650 {I_PMAXUB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDE\110", IF_WILLAMETTE|IF_SSE2},
2651 {I_PMAXUB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDE\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2652 ITEMPLATE_END
2653 };
2654
2655 static struct itemplate instrux_PMINSW[] = {
2656 {I_PMINSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEA\110", IF_KATMAI|IF_MMX},
2657 {I_PMINSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEA\110", IF_KATMAI|IF_MMX|IF_SM},
2658 {I_PMINSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xEA\110", IF_WILLAMETTE|IF_SSE2},
2659 {I_PMINSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xEA\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2660 ITEMPLATE_END
2661 };
2662
2663 static struct itemplate instrux_PMINUB[] = {
2664 {I_PMINUB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDA\110", IF_KATMAI|IF_MMX},
2665 {I_PMINUB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDA\110", IF_KATMAI|IF_MMX|IF_SM},
2666 {I_PMINUB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xDA\110", IF_WILLAMETTE|IF_SSE2},
2667 {I_PMINUB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xDA\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2668 ITEMPLATE_END
2669 };
2670
2671 static struct itemplate instrux_PMOVMSKB[] = {
2672 {I_PMOVMSKB, 2, {REG32,MMXREG,0}, "\2\x0F\xD7\110", IF_KATMAI|IF_MMX},
2673 {I_PMOVMSKB, 2, {REG32,XMMREG,0}, "\3\x66\x0F\xD7\110", IF_WILLAMETTE|IF_SSE2},
2674 ITEMPLATE_END
2675 };
2676
2677 static struct itemplate instrux_PMULHRIW[] = {
2678 {I_PMULHRIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5D\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2679 {I_PMULHRIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x5D\110", IF_PENT|IF_MMX|IF_CYRIX},
2680 ITEMPLATE_END
2681 };
2682
2683 static struct itemplate instrux_PMULHRWA[] = {
2684 {I_PMULHRWA, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\1\xB7", IF_PENT|IF_3DNOW|IF_SM},
2685 {I_PMULHRWA, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\1\xB7", IF_PENT|IF_3DNOW},
2686 ITEMPLATE_END
2687 };
2688
2689 static struct itemplate instrux_PMULHRWC[] = {
2690 {I_PMULHRWC, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x59\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2691 {I_PMULHRWC, 2, {MMXREG,MMXREG,0}, "\2\x0F\x59\110", IF_PENT|IF_MMX|IF_CYRIX},
2692 ITEMPLATE_END
2693 };
2694
2695 static struct itemplate instrux_PMULHUW[] = {
2696 {I_PMULHUW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE4\110", IF_KATMAI|IF_MMX},
2697 {I_PMULHUW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE4\110", IF_KATMAI|IF_MMX|IF_SM},
2698 {I_PMULHUW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE4\110", IF_WILLAMETTE|IF_SSE2},
2699 {I_PMULHUW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE4\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2700 ITEMPLATE_END
2701 };
2702
2703 static struct itemplate instrux_PMULHW[] = {
2704 {I_PMULHW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE5\110", IF_PENT|IF_MMX|IF_SM},
2705 {I_PMULHW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE5\110", IF_PENT|IF_MMX},
2706 {I_PMULHW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE5\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2707 {I_PMULHW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE5\110", IF_WILLAMETTE|IF_SSE2},
2708 ITEMPLATE_END
2709 };
2710
2711 static struct itemplate instrux_PMULLW[] = {
2712 {I_PMULLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD5\110", IF_PENT|IF_MMX|IF_SM},
2713 {I_PMULLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD5\110", IF_PENT|IF_MMX},
2714 {I_PMULLW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD5\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2715 {I_PMULLW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD5\110", IF_WILLAMETTE|IF_SSE2},
2716 ITEMPLATE_END
2717 };
2718
2719 static struct itemplate instrux_PMULUDQ[] = {
2720 {I_PMULUDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF4\110", IF_WILLAMETTE|IF_SSE2},
2721 {I_PMULUDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF4\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2722 {I_PMULUDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF4\110", IF_WILLAMETTE|IF_SSE2},
2723 {I_PMULUDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF4\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2724 ITEMPLATE_END
2725 };
2726
2727 static struct itemplate instrux_PMVGEZB[] = {
2728 {I_PMVGEZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5C\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2729 ITEMPLATE_END
2730 };
2731
2732 static struct itemplate instrux_PMVLZB[] = {
2733 {I_PMVLZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5B\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2734 ITEMPLATE_END
2735 };
2736
2737 static struct itemplate instrux_PMVNZB[] = {
2738 {I_PMVNZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5A\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2739 ITEMPLATE_END
2740 };
2741
2742 static struct itemplate instrux_PMVZB[] = {
2743 {I_PMVZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x58\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2744 ITEMPLATE_END
2745 };
2746
2747 static struct itemplate instrux_POP[] = {
2748 {I_POP, 1, {REG16,0,0}, "\320\10\x58", IF_8086},
2749 {I_POP, 1, {REG32,0,0}, "\321\10\x58", IF_386},
2750 {I_POP, 1, {REGMEM|BITS16,0,0}, "\320\300\1\x8F\200", IF_8086},
2751 {I_POP, 1, {REGMEM|BITS32,0,0}, "\321\300\1\x8F\200", IF_386},
2752 {I_POP, 1, {REG_CS,0,0}, "\1\x0F", IF_8086|IF_UNDOC},
2753 {I_POP, 1, {REG_DESS,0,0}, "\4", IF_8086},
2754 {I_POP, 1, {REG_FSGS,0,0}, "\1\x0F\5", IF_386},
2755 ITEMPLATE_END
2756 };
2757
2758 static struct itemplate instrux_POPA[] = {
2759 {I_POPA, 0, {0,0,0}, "\322\1\x61", IF_186},
2760 ITEMPLATE_END
2761 };
2762
2763 static struct itemplate instrux_POPAD[] = {
2764 {I_POPAD, 0, {0,0,0}, "\321\1\x61", IF_386},
2765 ITEMPLATE_END
2766 };
2767
2768 static struct itemplate instrux_POPAW[] = {
2769 {I_POPAW, 0, {0,0,0}, "\320\1\x61", IF_186},
2770 ITEMPLATE_END
2771 };
2772
2773 static struct itemplate instrux_POPF[] = {
2774 {I_POPF, 0, {0,0,0}, "\322\1\x9D", IF_8086},
2775 ITEMPLATE_END
2776 };
2777
2778 static struct itemplate instrux_POPFD[] = {
2779 {I_POPFD, 0, {0,0,0}, "\321\1\x9D", IF_386},
2780 ITEMPLATE_END
2781 };
2782
2783 static struct itemplate instrux_POPFW[] = {
2784 {I_POPFW, 0, {0,0,0}, "\320\1\x9D", IF_8086},
2785 ITEMPLATE_END
2786 };
2787
2788 static struct itemplate instrux_POR[] = {
2789 {I_POR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEB\110", IF_PENT|IF_MMX|IF_SM},
2790 {I_POR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEB\110", IF_PENT|IF_MMX},
2791 {I_POR, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xEB\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2792 {I_POR, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xEB\110", IF_WILLAMETTE|IF_SSE2},
2793 ITEMPLATE_END
2794 };
2795
2796 static struct itemplate instrux_PREFETCH[] = {
2797 {I_PREFETCH, 1, {MEMORY,0,0}, "\2\x0F\x0D\200", IF_PENT|IF_3DNOW|IF_SM},
2798 ITEMPLATE_END
2799 };
2800
2801 static struct itemplate instrux_PREFETCHNTA[] = {
2802 {I_PREFETCHNTA, 1, {MEMORY,0,0}, "\300\2\x0F\x18\200", IF_KATMAI},
2803 ITEMPLATE_END
2804 };
2805
2806 static struct itemplate instrux_PREFETCHT0[] = {
2807 {I_PREFETCHT0, 1, {MEMORY,0,0}, "\300\2\x0F\x18\201", IF_KATMAI},
2808 ITEMPLATE_END
2809 };
2810
2811 static struct itemplate instrux_PREFETCHT1[] = {
2812 {I_PREFETCHT1, 1, {MEMORY,0,0}, "\300\2\x0F\x18\202", IF_KATMAI},
2813 ITEMPLATE_END
2814 };
2815
2816 static struct itemplate instrux_PREFETCHT2[] = {
2817 {I_PREFETCHT2, 1, {MEMORY,0,0}, "\300\2\x0F\x18\203", IF_KATMAI},
2818 ITEMPLATE_END
2819 };
2820
2821 static struct itemplate instrux_PREFETCHW[] = {
2822 {I_PREFETCHW, 1, {MEMORY,0,0}, "\2\x0F\x0D\201", IF_PENT|IF_3DNOW|IF_SM},
2823 ITEMPLATE_END
2824 };
2825
2826 static struct itemplate instrux_PSADBW[] = {
2827 {I_PSADBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF6\110", IF_KATMAI|IF_MMX},
2828 {I_PSADBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF6\110", IF_KATMAI|IF_MMX|IF_SM},
2829 {I_PSADBW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF6\110", IF_WILLAMETTE|IF_SSE2},
2830 {I_PSADBW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF6\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2831 ITEMPLATE_END
2832 };
2833
2834 static struct itemplate instrux_PSHUFD[] = {
2835 {I_PSHUFD, 3, {XMMREG,XMMREG,IMMEDIATE}, "\3\x66\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2836 {I_PSHUFD, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\3\x66\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SM2|IF_SB|IF_AR2},
2837 ITEMPLATE_END
2838 };
2839
2840 static struct itemplate instrux_PSHUFHW[] = {
2841 {I_PSHUFHW, 3, {XMMREG,XMMREG,IMMEDIATE}, "\333\2\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2842 {I_PSHUFHW, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\333\2\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SM2|IF_SB|IF_AR2},
2843 ITEMPLATE_END
2844 };
2845
2846 static struct itemplate instrux_PSHUFLW[] = {
2847 {I_PSHUFLW, 3, {XMMREG,XMMREG,IMMEDIATE}, "\3\xF2\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
2848 {I_PSHUFLW, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\3\xF2\x0F\x70\110\22", IF_WILLAMETTE|IF_SSE2|IF_SM2|IF_SB|IF_AR2},
2849 ITEMPLATE_END
2850 };
2851
2852 static struct itemplate instrux_PSHUFW[] = {
2853 {I_PSHUFW, 3, {MMXREG,MMXREG,IMMEDIATE}, "\2\x0F\x70\110\22", IF_KATMAI|IF_MMX|IF_SB|IF_AR2},
2854 {I_PSHUFW, 3, {MMXREG,MEMORY,IMMEDIATE}, "\301\2\x0F\x70\110\22", IF_KATMAI|IF_MMX|IF_SM2|IF_SB|IF_AR2},
2855 ITEMPLATE_END
2856 };
2857
2858 static struct itemplate instrux_PSLLD[] = {
2859 {I_PSLLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF2\110", IF_PENT|IF_MMX|IF_SM},
2860 {I_PSLLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF2\110", IF_PENT|IF_MMX},
2861 {I_PSLLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\206\25", IF_PENT|IF_MMX},
2862 {I_PSLLD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF2\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2863 {I_PSLLD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF2\110", IF_WILLAMETTE|IF_SSE2},
2864 {I_PSLLD, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x72\206\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2865 ITEMPLATE_END
2866 };
2867
2868 static struct itemplate instrux_PSLLDQ[] = {
2869 {I_PSLLDQ, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x73\207\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2870 ITEMPLATE_END
2871 };
2872
2873 static struct itemplate instrux_PSLLQ[] = {
2874 {I_PSLLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF3\110", IF_PENT|IF_MMX|IF_SM},
2875 {I_PSLLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF3\110", IF_PENT|IF_MMX},
2876 {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\206\25", IF_PENT|IF_MMX},
2877 {I_PSLLQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF3\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2878 {I_PSLLQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF3\110", IF_WILLAMETTE|IF_SSE2},
2879 {I_PSLLQ, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x73\206\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2880 ITEMPLATE_END
2881 };
2882
2883 static struct itemplate instrux_PSLLW[] = {
2884 {I_PSLLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF1\110", IF_PENT|IF_MMX|IF_SM},
2885 {I_PSLLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF1\110", IF_PENT|IF_MMX},
2886 {I_PSLLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\206\25", IF_PENT|IF_MMX},
2887 {I_PSLLW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF1\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2888 {I_PSLLW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF1\110", IF_WILLAMETTE|IF_SSE2},
2889 {I_PSLLW, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x71\206\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2890 ITEMPLATE_END
2891 };
2892
2893 static struct itemplate instrux_PSRAD[] = {
2894 {I_PSRAD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE2\110", IF_PENT|IF_MMX|IF_SM},
2895 {I_PSRAD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE2\110", IF_PENT|IF_MMX},
2896 {I_PSRAD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\204\25", IF_PENT|IF_MMX},
2897 {I_PSRAD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE2\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2898 {I_PSRAD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE2\110", IF_WILLAMETTE|IF_SSE2},
2899 {I_PSRAD, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x72\204\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2900 ITEMPLATE_END
2901 };
2902
2903 static struct itemplate instrux_PSRAW[] = {
2904 {I_PSRAW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE1\110", IF_PENT|IF_MMX|IF_SM},
2905 {I_PSRAW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE1\110", IF_PENT|IF_MMX},
2906 {I_PSRAW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\204\25", IF_PENT|IF_MMX},
2907 {I_PSRAW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE1\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2908 {I_PSRAW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE1\110", IF_WILLAMETTE|IF_SSE2},
2909 {I_PSRAW, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x71\204\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2910 ITEMPLATE_END
2911 };
2912
2913 static struct itemplate instrux_PSRLD[] = {
2914 {I_PSRLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD2\110", IF_PENT|IF_MMX|IF_SM},
2915 {I_PSRLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD2\110", IF_PENT|IF_MMX},
2916 {I_PSRLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\202\25", IF_PENT|IF_MMX},
2917 {I_PSRLD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD2\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2918 {I_PSRLD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD2\110", IF_WILLAMETTE|IF_SSE2},
2919 {I_PSRLD, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x72\202\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2920 ITEMPLATE_END
2921 };
2922
2923 static struct itemplate instrux_PSRLDQ[] = {
2924 {I_PSRLDQ, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x73\203\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2925 ITEMPLATE_END
2926 };
2927
2928 static struct itemplate instrux_PSRLQ[] = {
2929 {I_PSRLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD3\110", IF_PENT|IF_MMX|IF_SM},
2930 {I_PSRLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD3\110", IF_PENT|IF_MMX},
2931 {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\202\25", IF_PENT|IF_MMX},
2932 {I_PSRLQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD3\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2933 {I_PSRLQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD3\110", IF_WILLAMETTE|IF_SSE2},
2934 {I_PSRLQ, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x73\202\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2935 ITEMPLATE_END
2936 };
2937
2938 static struct itemplate instrux_PSRLW[] = {
2939 {I_PSRLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD1\110", IF_PENT|IF_MMX|IF_SM},
2940 {I_PSRLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD1\110", IF_PENT|IF_MMX},
2941 {I_PSRLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\202\25", IF_PENT|IF_MMX},
2942 {I_PSRLW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD1\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2943 {I_PSRLW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD1\110", IF_WILLAMETTE|IF_SSE2},
2944 {I_PSRLW, 2, {XMMREG,IMMEDIATE,0}, "\3\x66\x0F\x71\202\25", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR1},
2945 ITEMPLATE_END
2946 };
2947
2948 static struct itemplate instrux_PSUBB[] = {
2949 {I_PSUBB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF8\110", IF_PENT|IF_MMX|IF_SM},
2950 {I_PSUBB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF8\110", IF_PENT|IF_MMX},
2951 {I_PSUBB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF8\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2952 {I_PSUBB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF8\110", IF_WILLAMETTE|IF_SSE2},
2953 ITEMPLATE_END
2954 };
2955
2956 static struct itemplate instrux_PSUBD[] = {
2957 {I_PSUBD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFA\110", IF_PENT|IF_MMX|IF_SM},
2958 {I_PSUBD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFA\110", IF_PENT|IF_MMX},
2959 {I_PSUBD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xFA\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2960 {I_PSUBD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xFA\110", IF_WILLAMETTE|IF_SSE2},
2961 ITEMPLATE_END
2962 };
2963
2964 static struct itemplate instrux_PSUBQ[] = {
2965 {I_PSUBQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFB\110", IF_WILLAMETTE|IF_SSE2},
2966 {I_PSUBQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFB\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2967 {I_PSUBQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xFB\110", IF_WILLAMETTE|IF_SSE2},
2968 {I_PSUBQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xFB\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2969 ITEMPLATE_END
2970 };
2971
2972 static struct itemplate instrux_PSUBSB[] = {
2973 {I_PSUBSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE8\110", IF_PENT|IF_MMX|IF_SM},
2974 {I_PSUBSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE8\110", IF_PENT|IF_MMX},
2975 {I_PSUBSB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE8\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2976 {I_PSUBSB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE8\110", IF_WILLAMETTE|IF_SSE2},
2977 ITEMPLATE_END
2978 };
2979
2980 static struct itemplate instrux_PSUBSIW[] = {
2981 {I_PSUBSIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x55\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
2982 {I_PSUBSIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x55\110", IF_PENT|IF_MMX|IF_CYRIX},
2983 ITEMPLATE_END
2984 };
2985
2986 static struct itemplate instrux_PSUBSW[] = {
2987 {I_PSUBSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE9\110", IF_PENT|IF_MMX|IF_SM},
2988 {I_PSUBSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE9\110", IF_PENT|IF_MMX},
2989 {I_PSUBSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xE9\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2990 {I_PSUBSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xE9\110", IF_WILLAMETTE|IF_SSE2},
2991 ITEMPLATE_END
2992 };
2993
2994 static struct itemplate instrux_PSUBUSB[] = {
2995 {I_PSUBUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD8\110", IF_PENT|IF_MMX|IF_SM},
2996 {I_PSUBUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD8\110", IF_PENT|IF_MMX},
2997 {I_PSUBUSB, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD8\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
2998 {I_PSUBUSB, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD8\110", IF_WILLAMETTE|IF_SSE2},
2999 ITEMPLATE_END
3000 };
3001
3002 static struct itemplate instrux_PSUBUSW[] = {
3003 {I_PSUBUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD9\110", IF_PENT|IF_MMX|IF_SM},
3004 {I_PSUBUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD9\110", IF_PENT|IF_MMX},
3005 {I_PSUBUSW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xD9\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3006 {I_PSUBUSW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xD9\110", IF_WILLAMETTE|IF_SSE2},
3007 ITEMPLATE_END
3008 };
3009
3010 static struct itemplate instrux_PSUBW[] = {
3011 {I_PSUBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF9\110", IF_PENT|IF_MMX|IF_SM},
3012 {I_PSUBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF9\110", IF_PENT|IF_MMX},
3013 {I_PSUBW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xF9\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3014 {I_PSUBW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xF9\110", IF_WILLAMETTE|IF_SSE2},
3015 ITEMPLATE_END
3016 };
3017
3018 static struct itemplate instrux_PSWAPD[] = {
3019 {I_PSWAPD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x0F\110\01\xBB", IF_PENT|IF_3DNOW|IF_SM},
3020 {I_PSWAPD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x0F\110\01\xBB", IF_PENT|IF_3DNOW},
3021 ITEMPLATE_END
3022 };
3023
3024 static struct itemplate instrux_PUNPCKHBW[] = {
3025 {I_PUNPCKHBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x68\110", IF_PENT|IF_MMX|IF_SM},
3026 {I_PUNPCKHBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x68\110", IF_PENT|IF_MMX},
3027 {I_PUNPCKHBW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x68\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3028 {I_PUNPCKHBW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x68\110", IF_WILLAMETTE|IF_SSE2},
3029 ITEMPLATE_END
3030 };
3031
3032 static struct itemplate instrux_PUNPCKHDQ[] = {
3033 {I_PUNPCKHDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6A\110", IF_PENT|IF_MMX|IF_SM},
3034 {I_PUNPCKHDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6A\110", IF_PENT|IF_MMX},
3035 {I_PUNPCKHDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6A\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3036 {I_PUNPCKHDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x6A\110", IF_WILLAMETTE|IF_SSE2},
3037 ITEMPLATE_END
3038 };
3039
3040 static struct itemplate instrux_PUNPCKHQDQ[] = {
3041 {I_PUNPCKHQDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x6D\110", IF_WILLAMETTE|IF_SSE2},
3042 {I_PUNPCKHQDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6D\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3043 ITEMPLATE_END
3044 };
3045
3046 static struct itemplate instrux_PUNPCKHWD[] = {
3047 {I_PUNPCKHWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x69\110", IF_PENT|IF_MMX|IF_SM},
3048 {I_PUNPCKHWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x69\110", IF_PENT|IF_MMX},
3049 {I_PUNPCKHWD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x69\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3050 {I_PUNPCKHWD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x69\110", IF_WILLAMETTE|IF_SSE2},
3051 ITEMPLATE_END
3052 };
3053
3054 static struct itemplate instrux_PUNPCKLBW[] = {
3055 {I_PUNPCKLBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x60\110", IF_PENT|IF_MMX|IF_SM},
3056 {I_PUNPCKLBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x60\110", IF_PENT|IF_MMX},
3057 {I_PUNPCKLBW, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x60\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3058 {I_PUNPCKLBW, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x60\110", IF_WILLAMETTE|IF_SSE2},
3059 ITEMPLATE_END
3060 };
3061
3062 static struct itemplate instrux_PUNPCKLDQ[] = {
3063 {I_PUNPCKLDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x62\110", IF_PENT|IF_MMX|IF_SM},
3064 {I_PUNPCKLDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x62\110", IF_PENT|IF_MMX},
3065 {I_PUNPCKLDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x62\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3066 {I_PUNPCKLDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x62\110", IF_WILLAMETTE|IF_SSE2},
3067 ITEMPLATE_END
3068 };
3069
3070 static struct itemplate instrux_PUNPCKLQDQ[] = {
3071 {I_PUNPCKLQDQ, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x6C\110", IF_WILLAMETTE|IF_SSE2},
3072 {I_PUNPCKLQDQ, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x6C\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3073 ITEMPLATE_END
3074 };
3075
3076 static struct itemplate instrux_PUNPCKLWD[] = {
3077 {I_PUNPCKLWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x61\110", IF_PENT|IF_MMX|IF_SM},
3078 {I_PUNPCKLWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x61\110", IF_PENT|IF_MMX},
3079 {I_PUNPCKLWD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x61\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3080 {I_PUNPCKLWD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x61\110", IF_WILLAMETTE|IF_SSE2},
3081 ITEMPLATE_END
3082 };
3083
3084 static struct itemplate instrux_PUSH[] = {
3085 {I_PUSH, 1, {REG16,0,0}, "\320\10\x50", IF_8086},
3086 {I_PUSH, 1, {REG32,0,0}, "\321\10\x50", IF_386},
3087 {I_PUSH, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\206", IF_8086},
3088 {I_PUSH, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\206", IF_386},
3089 {I_PUSH, 1, {REG_CS,0,0}, "\6", IF_8086},
3090 {I_PUSH, 1, {REG_DESS,0,0}, "\6", IF_8086},
3091 {I_PUSH, 1, {REG_FSGS,0,0}, "\1\x0F\7", IF_386},
3092 {I_PUSH, 1, {IMMEDIATE|BITS8,0,0}, "\1\x6A\14", IF_186},
3093 {I_PUSH, 1, {SBYTE,0,0}, "\1\x6A\14", IF_186},
3094 {I_PUSH, 1, {IMMEDIATE|BITS16,0,0}, "\320\133\1\x68\130", IF_186},
3095 {I_PUSH, 1, {IMMEDIATE|BITS32,0,0}, "\321\143\1\x68\140", IF_386},
3096 {I_PUSH, 1, {IMMEDIATE,0,0}, "\1\x68\34", IF_186},
3097 ITEMPLATE_END
3098 };
3099
3100 static struct itemplate instrux_PUSHA[] = {
3101 {I_PUSHA, 0, {0,0,0}, "\322\1\x60", IF_186},
3102 ITEMPLATE_END
3103 };
3104
3105 static struct itemplate instrux_PUSHAD[] = {
3106 {I_PUSHAD, 0, {0,0,0}, "\321\1\x60", IF_386},
3107 ITEMPLATE_END
3108 };
3109
3110 static struct itemplate instrux_PUSHAW[] = {
3111 {I_PUSHAW, 0, {0,0,0}, "\320\1\x60", IF_186},
3112 ITEMPLATE_END
3113 };
3114
3115 static struct itemplate instrux_PUSHF[] = {
3116 {I_PUSHF, 0, {0,0,0}, "\322\1\x9C", IF_8086},
3117 ITEMPLATE_END
3118 };
3119
3120 static struct itemplate instrux_PUSHFD[] = {
3121 {I_PUSHFD, 0, {0,0,0}, "\321\1\x9C", IF_386},
3122 ITEMPLATE_END
3123 };
3124
3125 static struct itemplate instrux_PUSHFW[] = {
3126 {I_PUSHFW, 0, {0,0,0}, "\320\1\x9C", IF_8086},
3127 ITEMPLATE_END
3128 };
3129
3130 static struct itemplate instrux_PXOR[] = {
3131 {I_PXOR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEF\110", IF_PENT|IF_MMX|IF_SM},
3132 {I_PXOR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEF\110", IF_PENT|IF_MMX},
3133 {I_PXOR, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\xEF\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3134 {I_PXOR, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\xEF\110", IF_WILLAMETTE|IF_SSE2},
3135 ITEMPLATE_END
3136 };
3137
3138 static struct itemplate instrux_RCL[] = {
3139 {I_RCL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\202", IF_8086},
3140 {I_RCL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\202", IF_8086},
3141 {I_RCL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\202\25", IF_186|IF_SB},
3142 {I_RCL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\202", IF_8086},
3143 {I_RCL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\202", IF_8086},
3144 {I_RCL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\202\25", IF_186|IF_SB},
3145 {I_RCL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\202", IF_386},
3146 {I_RCL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\202", IF_386},
3147 {I_RCL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\202\25", IF_386|IF_SB},
3148 ITEMPLATE_END
3149 };
3150
3151 static struct itemplate instrux_RCPPS[] = {
3152 {I_RCPPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x53\110", IF_KATMAI|IF_SSE},
3153 {I_RCPPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x53\110", IF_KATMAI|IF_SSE},
3154 ITEMPLATE_END
3155 };
3156
3157 static struct itemplate instrux_RCPSS[] = {
3158 {I_RCPSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x53\110", IF_KATMAI|IF_SSE},
3159 {I_RCPSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x53\110", IF_KATMAI|IF_SSE},
3160 ITEMPLATE_END
3161 };
3162
3163 static struct itemplate instrux_RCR[] = {
3164 {I_RCR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\203", IF_8086},
3165 {I_RCR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\203", IF_8086},
3166 {I_RCR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\203\25", IF_186|IF_SB},
3167 {I_RCR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\203", IF_8086},
3168 {I_RCR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\203", IF_8086},
3169 {I_RCR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\203\25", IF_186|IF_SB},
3170 {I_RCR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\203", IF_386},
3171 {I_RCR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\203", IF_386},
3172 {I_RCR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\203\25", IF_386|IF_SB},
3173 ITEMPLATE_END
3174 };
3175
3176 static struct itemplate instrux_RDMSR[] = {
3177 {I_RDMSR, 0, {0,0,0}, "\2\x0F\x32", IF_PENT|IF_PRIV},
3178 ITEMPLATE_END
3179 };
3180
3181 static struct itemplate instrux_RDPMC[] = {
3182 {I_RDPMC, 0, {0,0,0}, "\2\x0F\x33", IF_P6},
3183 ITEMPLATE_END
3184 };
3185
3186 static struct itemplate instrux_RDSHR[] = {
3187 {I_RDSHR, 1, {REGMEM|BITS32,0,0}, "\321\300\2\x0F\x36\200", IF_P6|IF_CYRIX|IF_SMM},
3188 ITEMPLATE_END
3189 };
3190
3191 static struct itemplate instrux_RDTSC[] = {
3192 {I_RDTSC, 0, {0,0,0}, "\2\x0F\x31", IF_PENT},
3193 ITEMPLATE_END
3194 };
3195
3196 static struct itemplate instrux_RESB[] = {
3197 {I_RESB, 1, {IMMEDIATE,0,0}, "\340", IF_8086},
3198 ITEMPLATE_END
3199 };
3200
3201 static struct itemplate instrux_RESD[] = {
3202 ITEMPLATE_END
3203 };
3204
3205 static struct itemplate instrux_RESQ[] = {
3206 ITEMPLATE_END
3207 };
3208
3209 static struct itemplate instrux_REST[] = {
3210 ITEMPLATE_END
3211 };
3212
3213 static struct itemplate instrux_RESW[] = {
3214 ITEMPLATE_END
3215 };
3216
3217 static struct itemplate instrux_RET[] = {
3218 {I_RET, 0, {0,0,0}, "\1\xC3", IF_8086},
3219 {I_RET, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086|IF_SW},
3220 ITEMPLATE_END
3221 };
3222
3223 static struct itemplate instrux_RETF[] = {
3224 {I_RETF, 0, {0,0,0}, "\1\xCB", IF_8086},
3225 {I_RETF, 1, {IMMEDIATE,0,0}, "\1\xCA\30", IF_8086|IF_SW},
3226 ITEMPLATE_END
3227 };
3228
3229 static struct itemplate instrux_RETN[] = {
3230 {I_RETN, 0, {0,0,0}, "\1\xC3", IF_8086},
3231 {I_RETN, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086|IF_SW},
3232 ITEMPLATE_END
3233 };
3234
3235 static struct itemplate instrux_ROL[] = {
3236 {I_ROL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\200", IF_8086},
3237 {I_ROL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\200", IF_8086},
3238 {I_ROL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\200\25", IF_186|IF_SB},
3239 {I_ROL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\200", IF_8086},
3240 {I_ROL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\200", IF_8086},
3241 {I_ROL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\200\25", IF_186|IF_SB},
3242 {I_ROL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\200", IF_386},
3243 {I_ROL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\200", IF_386},
3244 {I_ROL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\200\25", IF_386|IF_SB},
3245 ITEMPLATE_END
3246 };
3247
3248 static struct itemplate instrux_ROR[] = {
3249 {I_ROR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\201", IF_8086},
3250 {I_ROR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\201", IF_8086},
3251 {I_ROR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\201\25", IF_186|IF_SB},
3252 {I_ROR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\201", IF_8086},
3253 {I_ROR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\201", IF_8086},
3254 {I_ROR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\201\25", IF_186|IF_SB},
3255 {I_ROR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\201", IF_386},
3256 {I_ROR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\201", IF_386},
3257 {I_ROR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\201\25", IF_386|IF_SB},
3258 ITEMPLATE_END
3259 };
3260
3261 static struct itemplate instrux_RSDC[] = {
3262 {I_RSDC, 2, {REG_SREG,MEMORY|BITS80,0}, "\301\2\x0F\x79\110", IF_486|IF_CYRIX|IF_SMM},
3263 ITEMPLATE_END
3264 };
3265
3266 static struct itemplate instrux_RSLDT[] = {
3267 {I_RSLDT, 1, {MEMORY|BITS80,0,0}, "\300\2\x0F\x7B\200", IF_486|IF_CYRIX|IF_SMM},
3268 ITEMPLATE_END
3269 };
3270
3271 static struct itemplate instrux_RSM[] = {
3272 {I_RSM, 0, {0,0,0}, "\2\x0F\xAA", IF_PENT|IF_SMM},
3273 ITEMPLATE_END
3274 };
3275
3276 static struct itemplate instrux_RSQRTPS[] = {
3277 {I_RSQRTPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x52\110", IF_KATMAI|IF_SSE},
3278 {I_RSQRTPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x52\110", IF_KATMAI|IF_SSE},
3279 ITEMPLATE_END
3280 };
3281
3282 static struct itemplate instrux_RSQRTSS[] = {
3283 {I_RSQRTSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x52\110", IF_KATMAI|IF_SSE},
3284 {I_RSQRTSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x52\110", IF_KATMAI|IF_SSE},
3285 ITEMPLATE_END
3286 };
3287
3288 static struct itemplate instrux_RSTS[] = {
3289 {I_RSTS, 1, {MEMORY|BITS80,0,0}, "\300\2\x0F\x7D\200", IF_486|IF_CYRIX|IF_SMM},
3290 ITEMPLATE_END
3291 };
3292
3293 static struct itemplate instrux_SAHF[] = {
3294 {I_SAHF, 0, {0,0,0}, "\1\x9E", IF_8086},
3295 ITEMPLATE_END
3296 };
3297
3298 static struct itemplate instrux_SAL[] = {
3299 {I_SAL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
3300 {I_SAL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
3301 {I_SAL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_186|IF_SB},
3302 {I_SAL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
3303 {I_SAL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
3304 {I_SAL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_186|IF_SB},
3305 {I_SAL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
3306 {I_SAL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
3307 {I_SAL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386|IF_SB},
3308 ITEMPLATE_END
3309 };
3310
3311 static struct itemplate instrux_SALC[] = {
3312 {I_SALC, 0, {0,0,0}, "\1\xD6", IF_8086|IF_UNDOC},
3313 ITEMPLATE_END
3314 };
3315
3316 static struct itemplate instrux_SAR[] = {
3317 {I_SAR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\207", IF_8086},
3318 {I_SAR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\207", IF_8086},
3319 {I_SAR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\207\25", IF_186|IF_SB},
3320 {I_SAR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\207", IF_8086},
3321 {I_SAR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\207", IF_8086},
3322 {I_SAR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\207\25", IF_186|IF_SB},
3323 {I_SAR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\207", IF_386},
3324 {I_SAR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\207", IF_386},
3325 {I_SAR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\207\25", IF_386|IF_SB},
3326 ITEMPLATE_END
3327 };
3328
3329 static struct itemplate instrux_SBB[] = {
3330 {I_SBB, 2, {MEMORY,REG8,0}, "\300\1\x18\101", IF_8086|IF_SM},
3331 {I_SBB, 2, {REG8,REG8,0}, "\1\x18\101", IF_8086},
3332 {I_SBB, 2, {MEMORY,REG16,0}, "\320\300\1\x19\101", IF_8086|IF_SM},
3333 {I_SBB, 2, {REG16,REG16,0}, "\320\1\x19\101", IF_8086},
3334 {I_SBB, 2, {MEMORY,REG32,0}, "\321\300\1\x19\101", IF_386|IF_SM},
3335 {I_SBB, 2, {REG32,REG32,0}, "\321\1\x19\101", IF_386},
3336 {I_SBB, 2, {REG8,MEMORY,0}, "\301\1\x1A\110", IF_8086|IF_SM},
3337 {I_SBB, 2, {REG8,REG8,0}, "\1\x1A\110", IF_8086},
3338 {I_SBB, 2, {REG16,MEMORY,0}, "\320\301\1\x1B\110", IF_8086|IF_SM},
3339 {I_SBB, 2, {REG16,REG16,0}, "\320\1\x1B\110", IF_8086},
3340 {I_SBB, 2, {REG32,MEMORY,0}, "\321\301\1\x1B\110", IF_386|IF_SM},
3341 {I_SBB, 2, {REG32,REG32,0}, "\321\1\x1B\110", IF_386},
3342 {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\203\15", IF_8086},
3343 {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\203\15", IF_386},
3344 {I_SBB, 2, {REG_AL,IMMEDIATE,0}, "\1\x1C\21", IF_8086|IF_SM},
3345 {I_SBB, 2, {REG_AX,SBYTE,0}, "\320\1\x83\203\15", IF_8086|IF_SM},
3346 {I_SBB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x1D\31", IF_8086|IF_SM},
3347 {I_SBB, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\203\15", IF_386|IF_SM},
3348 {I_SBB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x1D\41", IF_386|IF_SM},
3349 {I_SBB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
3350 {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\203\131", IF_8086|IF_SM},
3351 {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\203\141", IF_386|IF_SM},
3352 {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
3353 {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\203\131", IF_8086|IF_SM},
3354 {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\203\141", IF_386|IF_SM},
3355 ITEMPLATE_END
3356 };
3357
3358 static struct itemplate instrux_SCASB[] = {
3359 {I_SCASB, 0, {0,0,0}, "\332\1\xAE", IF_8086},
3360 ITEMPLATE_END
3361 };
3362
3363 static struct itemplate instrux_SCASD[] = {
3364 {I_SCASD, 0, {0,0,0}, "\332\321\1\xAF", IF_386},
3365 ITEMPLATE_END
3366 };
3367
3368 static struct itemplate instrux_SCASW[] = {
3369 {I_SCASW, 0, {0,0,0}, "\332\320\1\xAF", IF_8086},
3370 ITEMPLATE_END
3371 };
3372
3373 static struct itemplate instrux_SFENCE[] = {
3374 {I_SFENCE, 0, {0,0,0}, "\3\x0F\xAE\xF8", IF_KATMAI},
3375 ITEMPLATE_END
3376 };
3377
3378 static struct itemplate instrux_SGDT[] = {
3379 {I_SGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\200", IF_286},
3380 ITEMPLATE_END
3381 };
3382
3383 static struct itemplate instrux_SHL[] = {
3384 {I_SHL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
3385 {I_SHL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
3386 {I_SHL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_186|IF_SB},
3387 {I_SHL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
3388 {I_SHL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
3389 {I_SHL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_186|IF_SB},
3390 {I_SHL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
3391 {I_SHL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
3392 {I_SHL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386|IF_SB},
3393 ITEMPLATE_END
3394 };
3395
3396 static struct itemplate instrux_SHLD[] = {
3397 {I_SHLD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xA4\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3398 {I_SHLD, 3, {REG16,REG16,IMMEDIATE}, "\320\2\x0F\xA4\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3399 {I_SHLD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xA4\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3400 {I_SHLD, 3, {REG32,REG32,IMMEDIATE}, "\321\2\x0F\xA4\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3401 {I_SHLD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xA5\101", IF_386|IF_SM},
3402 {I_SHLD, 3, {REG16,REG16,REG_CL}, "\320\2\x0F\xA5\101", IF_386},
3403 {I_SHLD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xA5\101", IF_386|IF_SM},
3404 {I_SHLD, 3, {REG32,REG32,REG_CL}, "\321\2\x0F\xA5\101", IF_386},
3405 ITEMPLATE_END
3406 };
3407
3408 static struct itemplate instrux_SHR[] = {
3409 {I_SHR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\205", IF_8086},
3410 {I_SHR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\205", IF_8086},
3411 {I_SHR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\205\25", IF_186|IF_SB},
3412 {I_SHR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\205", IF_8086},
3413 {I_SHR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\205", IF_8086},
3414 {I_SHR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\205\25", IF_186|IF_SB},
3415 {I_SHR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\205", IF_386},
3416 {I_SHR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\205", IF_386},
3417 {I_SHR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\205\25", IF_386|IF_SB},
3418 ITEMPLATE_END
3419 };
3420
3421 static struct itemplate instrux_SHRD[] = {
3422 {I_SHRD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xAC\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3423 {I_SHRD, 3, {REG16,REG16,IMMEDIATE}, "\320\2\x0F\xAC\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3424 {I_SHRD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xAC\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3425 {I_SHRD, 3, {REG32,REG32,IMMEDIATE}, "\321\2\x0F\xAC\101\26", IF_386|IF_SM2|IF_SB|IF_AR2},
3426 {I_SHRD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xAD\101", IF_386|IF_SM},
3427 {I_SHRD, 3, {REG16,REG16,REG_CL}, "\320\2\x0F\xAD\101", IF_386},
3428 {I_SHRD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xAD\101", IF_386|IF_SM},
3429 {I_SHRD, 3, {REG32,REG32,REG_CL}, "\321\2\x0F\xAD\101", IF_386},
3430 ITEMPLATE_END
3431 };
3432
3433 static struct itemplate instrux_SHUFPD[] = {
3434 {I_SHUFPD, 3, {XMMREG,XMMREG,IMMEDIATE}, "\3\x66\x0F\xC6\110\26", IF_WILLAMETTE|IF_SSE2|IF_SB|IF_AR2},
3435 {I_SHUFPD, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\3\x66\x0F\xC6\110\26", IF_WILLAMETTE|IF_SSE2|IF_SM|IF_SB|IF_AR2},
3436 ITEMPLATE_END
3437 };
3438
3439 static struct itemplate instrux_SHUFPS[] = {
3440 {I_SHUFPS, 3, {XMMREG,MEMORY,IMMEDIATE}, "\301\2\x0F\xC6\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
3441 {I_SHUFPS, 3, {XMMREG,XMMREG,IMMEDIATE}, "\2\x0F\xC6\110\26", IF_KATMAI|IF_SSE|IF_SB|IF_AR2},
3442 ITEMPLATE_END
3443 };
3444
3445 static struct itemplate instrux_SIDT[] = {
3446 {I_SIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\201", IF_286},
3447 ITEMPLATE_END
3448 };
3449
3450 static struct itemplate instrux_SLDT[] = {
3451 {I_SLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\200", IF_286},
3452 {I_SLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\200", IF_286},
3453 {I_SLDT, 1, {REG16,0,0}, "\320\1\x0F\17\200", IF_286},
3454 {I_SLDT, 1, {REG32,0,0}, "\321\1\x0F\17\200", IF_386},
3455 ITEMPLATE_END
3456 };
3457
3458 static struct itemplate instrux_SMI[] = {
3459 {I_SMI, 0, {0,0,0}, "\1\xF1", IF_386|IF_UNDOC},
3460 ITEMPLATE_END
3461 };
3462
3463 static struct itemplate instrux_SMINT[] = {
3464 {I_SMINT, 0, {0,0,0}, "\2\x0F\x38", IF_P6|IF_CYRIX},
3465 ITEMPLATE_END
3466 };
3467
3468 static struct itemplate instrux_SMINTOLD[] = {
3469 {I_SMINTOLD, 0, {0,0,0}, "\2\x0F\x7E", IF_486|IF_CYRIX},
3470 ITEMPLATE_END
3471 };
3472
3473 static struct itemplate instrux_SMSW[] = {
3474 {I_SMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\204", IF_286},
3475 {I_SMSW, 1, {MEMORY|BITS16,0,0}, "\300\2\x0F\x01\204", IF_286},
3476 {I_SMSW, 1, {REG16,0,0}, "\320\2\x0F\x01\204", IF_286},
3477 {I_SMSW, 1, {REG32,0,0}, "\321\2\x0F\x01\204", IF_386},
3478 ITEMPLATE_END
3479 };
3480
3481 static struct itemplate instrux_SQRTPD[] = {
3482 {I_SQRTPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x51\110", IF_WILLAMETTE|IF_SSE2},
3483 {I_SQRTPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x51\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3484 ITEMPLATE_END
3485 };
3486
3487 static struct itemplate instrux_SQRTPS[] = {
3488 {I_SQRTPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x51\110", IF_KATMAI|IF_SSE},
3489 {I_SQRTPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x51\110", IF_KATMAI|IF_SSE},
3490 ITEMPLATE_END
3491 };
3492
3493 static struct itemplate instrux_SQRTSD[] = {
3494 {I_SQRTSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x51\110", IF_WILLAMETTE|IF_SSE2},
3495 {I_SQRTSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x51\110", IF_WILLAMETTE|IF_SSE2},
3496 ITEMPLATE_END
3497 };
3498
3499 static struct itemplate instrux_SQRTSS[] = {
3500 {I_SQRTSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x51\110", IF_KATMAI|IF_SSE},
3501 {I_SQRTSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x51\110", IF_KATMAI|IF_SSE},
3502 ITEMPLATE_END
3503 };
3504
3505 static struct itemplate instrux_STC[] = {
3506 {I_STC, 0, {0,0,0}, "\1\xF9", IF_8086},
3507 ITEMPLATE_END
3508 };
3509
3510 static struct itemplate instrux_STD[] = {
3511 {I_STD, 0, {0,0,0}, "\1\xFD", IF_8086},
3512 ITEMPLATE_END
3513 };
3514
3515 static struct itemplate instrux_STI[] = {
3516 {I_STI, 0, {0,0,0}, "\1\xFB", IF_8086},
3517 ITEMPLATE_END
3518 };
3519
3520 static struct itemplate instrux_STMXCSR[] = {
3521 {I_STMXCSR, 1, {MEMORY,0,0}, "\300\2\x0F\xAE\203", IF_KATMAI|IF_SSE|IF_SD},
3522 ITEMPLATE_END
3523 };
3524
3525 static struct itemplate instrux_STOSB[] = {
3526 {I_STOSB, 0, {0,0,0}, "\1\xAA", IF_8086},
3527 ITEMPLATE_END
3528 };
3529
3530 static struct itemplate instrux_STOSD[] = {
3531 {I_STOSD, 0, {0,0,0}, "\321\1\xAB", IF_386},
3532 ITEMPLATE_END
3533 };
3534
3535 static struct itemplate instrux_STOSW[] = {
3536 {I_STOSW, 0, {0,0,0}, "\320\1\xAB", IF_8086},
3537 ITEMPLATE_END
3538 };
3539
3540 static struct itemplate instrux_STR[] = {
3541 {I_STR, 1, {MEMORY,0,0}, "\300\1\x0F\17\201", IF_286|IF_PROT},
3542 {I_STR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\201", IF_286|IF_PROT},
3543 {I_STR, 1, {REG16,0,0}, "\320\1\x0F\17\201", IF_286|IF_PROT},
3544 {I_STR, 1, {REG32,0,0}, "\321\1\x0F\17\201", IF_386|IF_PROT},
3545 ITEMPLATE_END
3546 };
3547
3548 static struct itemplate instrux_SUB[] = {
3549 {I_SUB, 2, {MEMORY,REG8,0}, "\300\1\x28\101", IF_8086|IF_SM},
3550 {I_SUB, 2, {REG8,REG8,0}, "\1\x28\101", IF_8086},
3551 {I_SUB, 2, {MEMORY,REG16,0}, "\320\300\1\x29\101", IF_8086|IF_SM},
3552 {I_SUB, 2, {REG16,REG16,0}, "\320\1\x29\101", IF_8086},
3553 {I_SUB, 2, {MEMORY,REG32,0}, "\321\300\1\x29\101", IF_386|IF_SM},
3554 {I_SUB, 2, {REG32,REG32,0}, "\321\1\x29\101", IF_386},
3555 {I_SUB, 2, {REG8,MEMORY,0}, "\301\1\x2A\110", IF_8086|IF_SM},
3556 {I_SUB, 2, {REG8,REG8,0}, "\1\x2A\110", IF_8086},
3557 {I_SUB, 2, {REG16,MEMORY,0}, "\320\301\1\x2B\110", IF_8086|IF_SM},
3558 {I_SUB, 2, {REG16,REG16,0}, "\320\1\x2B\110", IF_8086},
3559 {I_SUB, 2, {REG32,MEMORY,0}, "\321\301\1\x2B\110", IF_386|IF_SM},
3560 {I_SUB, 2, {REG32,REG32,0}, "\321\1\x2B\110", IF_386},
3561 {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\205\15", IF_8086},
3562 {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\205\15", IF_386},
3563 {I_SUB, 2, {REG_AL,IMMEDIATE,0}, "\1\x2C\21", IF_8086|IF_SM},
3564 {I_SUB, 2, {REG_AX,SBYTE,0}, "\320\1\x83\205\15", IF_8086|IF_SM},
3565 {I_SUB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x2D\31", IF_8086|IF_SM},
3566 {I_SUB, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\205\15", IF_386|IF_SM},
3567 {I_SUB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x2D\41", IF_386|IF_SM},
3568 {I_SUB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
3569 {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\205\131", IF_8086|IF_SM},
3570 {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\205\141", IF_386|IF_SM},
3571 {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
3572 {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\205\131", IF_8086|IF_SM},
3573 {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\205\141", IF_386|IF_SM},
3574 ITEMPLATE_END
3575 };
3576
3577 static struct itemplate instrux_SUBPD[] = {
3578 {I_SUBPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x5C\110", IF_WILLAMETTE|IF_SSE2},
3579 {I_SUBPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x5C\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3580 ITEMPLATE_END
3581 };
3582
3583 static struct itemplate instrux_SUBPS[] = {
3584 {I_SUBPS, 2, {XMMREG,MEMORY,0}, "\301\331\2\x0F\x5C\110", IF_KATMAI|IF_SSE},
3585 {I_SUBPS, 2, {XMMREG,XMMREG,0}, "\331\2\x0F\x5C\110", IF_KATMAI|IF_SSE},
3586 ITEMPLATE_END
3587 };
3588
3589 static struct itemplate instrux_SUBSD[] = {
3590 {I_SUBSD, 2, {XMMREG,XMMREG,0}, "\3\xF2\x0F\x5C\110", IF_WILLAMETTE|IF_SSE2},
3591 {I_SUBSD, 2, {XMMREG,MEMORY,0}, "\301\3\xF2\x0F\x5C\110", IF_WILLAMETTE|IF_SSE2},
3592 ITEMPLATE_END
3593 };
3594
3595 static struct itemplate instrux_SUBSS[] = {
3596 {I_SUBSS, 2, {XMMREG,MEMORY,0}, "\301\333\2\x0F\x5C\110", IF_KATMAI|IF_SSE},
3597 {I_SUBSS, 2, {XMMREG,XMMREG,0}, "\333\2\x0F\x5C\110", IF_KATMAI|IF_SSE},
3598 ITEMPLATE_END
3599 };
3600
3601 static struct itemplate instrux_SVDC[] = {
3602 {I_SVDC, 2, {MEMORY|BITS80,REG_SREG,0}, "\300\2\x0F\x78\101", IF_486|IF_CYRIX|IF_SMM},
3603 ITEMPLATE_END
3604 };
3605
3606 static struct itemplate instrux_SVLDT[] = {
3607 {I_SVLDT, 1, {MEMORY|BITS80,0,0}, "\300\2\x0F\x7A\200", IF_486|IF_CYRIX|IF_SMM},
3608 ITEMPLATE_END
3609 };
3610
3611 static struct itemplate instrux_SVTS[] = {
3612 {I_SVTS, 1, {MEMORY|BITS80,0,0}, "\300\2\x0F\x7C\200", IF_486|IF_CYRIX|IF_SMM},
3613 ITEMPLATE_END
3614 };
3615
3616 static struct itemplate instrux_SYSCALL[] = {
3617 {I_SYSCALL, 0, {0,0,0}, "\2\x0F\x05", IF_P6|IF_AMD},
3618 ITEMPLATE_END
3619 };
3620
3621 static struct itemplate instrux_SYSENTER[] = {
3622 {I_SYSENTER, 0, {0,0,0}, "\2\x0F\x34", IF_P6},
3623 ITEMPLATE_END
3624 };
3625
3626 static struct itemplate instrux_SYSEXIT[] = {
3627 {I_SYSEXIT, 0, {0,0,0}, "\2\x0F\x35", IF_P6|IF_PRIV},
3628 ITEMPLATE_END
3629 };
3630
3631 static struct itemplate instrux_SYSRET[] = {
3632 {I_SYSRET, 0, {0,0,0}, "\2\x0F\x07", IF_P6|IF_PRIV|IF_AMD},
3633 ITEMPLATE_END
3634 };
3635
3636 static struct itemplate instrux_TEST[] = {
3637 {I_TEST, 2, {MEMORY,REG8,0}, "\300\1\x84\101", IF_8086|IF_SM},
3638 {I_TEST, 2, {REG8,REG8,0}, "\1\x84\101", IF_8086},
3639 {I_TEST, 2, {MEMORY,REG16,0}, "\320\300\1\x85\101", IF_8086|IF_SM},
3640 {I_TEST, 2, {REG16,REG16,0}, "\320\1\x85\101", IF_8086},
3641 {I_TEST, 2, {MEMORY,REG32,0}, "\321\300\1\x85\101", IF_386|IF_SM},
3642 {I_TEST, 2, {REG32,REG32,0}, "\321\1\x85\101", IF_386},
3643 {I_TEST, 2, {REG8,MEMORY,0}, "\301\1\x84\110", IF_8086|IF_SM},
3644 {I_TEST, 2, {REG16,MEMORY,0}, "\320\301\1\x85\110", IF_8086|IF_SM},
3645 {I_TEST, 2, {REG32,MEMORY,0}, "\321\301\1\x85\110", IF_386|IF_SM},
3646 {I_TEST, 2, {REG_AL,IMMEDIATE,0}, "\1\xA8\21", IF_8086|IF_SM},
3647 {I_TEST, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xA9\31", IF_8086|IF_SM},
3648 {I_TEST, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xA9\41", IF_386|IF_SM},
3649 {I_TEST, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
3650 {I_TEST, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
3651 {I_TEST, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xF7\200\41", IF_386|IF_SM},
3652 {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
3653 {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
3654 {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xF7\200\41", IF_386|IF_SM},
3655 ITEMPLATE_END
3656 };
3657
3658 static struct itemplate instrux_UCOMISD[] = {
3659 {I_UCOMISD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x2E\110", IF_WILLAMETTE|IF_SSE2},
3660 {I_UCOMISD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x2E\110", IF_WILLAMETTE|IF_SSE2},
3661 ITEMPLATE_END
3662 };
3663
3664 static struct itemplate instrux_UCOMISS[] = {
3665 {I_UCOMISS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x2E\110", IF_KATMAI|IF_SSE},
3666 {I_UCOMISS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x2E\110", IF_KATMAI|IF_SSE},
3667 ITEMPLATE_END
3668 };
3669
3670 static struct itemplate instrux_UD0[] = {
3671 {I_UD0, 0, {0,0,0}, "\2\x0F\xFF", IF_286|IF_UNDOC},
3672 ITEMPLATE_END
3673 };
3674
3675 static struct itemplate instrux_UD1[] = {
3676 {I_UD1, 0, {0,0,0}, "\2\x0F\xB9", IF_286|IF_UNDOC},
3677 ITEMPLATE_END
3678 };
3679
3680 static struct itemplate instrux_UD2[] = {
3681 {I_UD2, 0, {0,0,0}, "\2\x0F\x0B", IF_286},
3682 ITEMPLATE_END
3683 };
3684
3685 static struct itemplate instrux_UMOV[] = {
3686 {I_UMOV, 2, {MEMORY,REG8,0}, "\300\2\x0F\x10\101", IF_386|IF_UNDOC|IF_SM},
3687 {I_UMOV, 2, {REG8,REG8,0}, "\2\x0F\x10\101", IF_386|IF_UNDOC},
3688 {I_UMOV, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
3689 {I_UMOV, 2, {REG16,REG16,0}, "\320\2\x0F\x11\101", IF_386|IF_UNDOC},
3690 {I_UMOV, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
3691 {I_UMOV, 2, {REG32,REG32,0}, "\321\2\x0F\x11\101", IF_386|IF_UNDOC},
3692 {I_UMOV, 2, {REG8,MEMORY,0}, "\301\2\x0F\x12\110", IF_386|IF_UNDOC|IF_SM},
3693 {I_UMOV, 2, {REG8,REG8,0}, "\2\x0F\x12\110", IF_386|IF_UNDOC},
3694 {I_UMOV, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
3695 {I_UMOV, 2, {REG16,REG16,0}, "\320\2\x0F\x13\110", IF_386|IF_UNDOC},
3696 {I_UMOV, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
3697 {I_UMOV, 2, {REG32,REG32,0}, "\321\2\x0F\x13\110", IF_386|IF_UNDOC},
3698 ITEMPLATE_END
3699 };
3700
3701 static struct itemplate instrux_UNPCKHPD[] = {
3702 {I_UNPCKHPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x15\110", IF_WILLAMETTE|IF_SSE2},
3703 {I_UNPCKHPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x15\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3704 ITEMPLATE_END
3705 };
3706
3707 static struct itemplate instrux_UNPCKHPS[] = {
3708 {I_UNPCKHPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x15\110", IF_KATMAI|IF_SSE},
3709 {I_UNPCKHPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x15\110", IF_KATMAI|IF_SSE},
3710 ITEMPLATE_END
3711 };
3712
3713 static struct itemplate instrux_UNPCKLPD[] = {
3714 {I_UNPCKLPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x14\110", IF_WILLAMETTE|IF_SSE2},
3715 {I_UNPCKLPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x14\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3716 ITEMPLATE_END
3717 };
3718
3719 static struct itemplate instrux_UNPCKLPS[] = {
3720 {I_UNPCKLPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x14\110", IF_KATMAI|IF_SSE},
3721 {I_UNPCKLPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x14\110", IF_KATMAI|IF_SSE},
3722 ITEMPLATE_END
3723 };
3724
3725 static struct itemplate instrux_VERR[] = {
3726 {I_VERR, 1, {MEMORY,0,0}, "\300\1\x0F\17\204", IF_286|IF_PROT},
3727 {I_VERR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\204", IF_286|IF_PROT},
3728 {I_VERR, 1, {REG16,0,0}, "\1\x0F\17\204", IF_286|IF_PROT},
3729 ITEMPLATE_END
3730 };
3731
3732 static struct itemplate instrux_VERW[] = {
3733 {I_VERW, 1, {MEMORY,0,0}, "\300\1\x0F\17\205", IF_286|IF_PROT},
3734 {I_VERW, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\205", IF_286|IF_PROT},
3735 {I_VERW, 1, {REG16,0,0}, "\1\x0F\17\205", IF_286|IF_PROT},
3736 ITEMPLATE_END
3737 };
3738
3739 static struct itemplate instrux_WAIT[] = {
3740 {I_WAIT, 0, {0,0,0}, "\1\x9B", IF_8086},
3741 ITEMPLATE_END
3742 };
3743
3744 static struct itemplate instrux_WBINVD[] = {
3745 {I_WBINVD, 0, {0,0,0}, "\2\x0F\x09", IF_486|IF_PRIV},
3746 ITEMPLATE_END
3747 };
3748
3749 static struct itemplate instrux_WRMSR[] = {
3750 {I_WRMSR, 0, {0,0,0}, "\2\x0F\x30", IF_PENT|IF_PRIV},
3751 ITEMPLATE_END
3752 };
3753
3754 static struct itemplate instrux_WRSHR[] = {
3755 {I_WRSHR, 1, {REGMEM|BITS32,0,0}, "\321\300\2\x0F\x37\200", IF_P6|IF_CYRIX|IF_SMM},
3756 ITEMPLATE_END
3757 };
3758
3759 static struct itemplate instrux_XADD[] = {
3760 {I_XADD, 2, {MEMORY,REG8,0}, "\300\2\x0F\xC0\101", IF_486|IF_SM},
3761 {I_XADD, 2, {REG8,REG8,0}, "\2\x0F\xC0\101", IF_486},
3762 {I_XADD, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xC1\101", IF_486|IF_SM},
3763 {I_XADD, 2, {REG16,REG16,0}, "\320\2\x0F\xC1\101", IF_486},
3764 {I_XADD, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xC1\101", IF_486|IF_SM},
3765 {I_XADD, 2, {REG32,REG32,0}, "\321\2\x0F\xC1\101", IF_486},
3766 ITEMPLATE_END
3767 };
3768
3769 static struct itemplate instrux_XBTS[] = {
3770 {I_XBTS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xA6\110", IF_386|IF_SW|IF_UNDOC},
3771 {I_XBTS, 2, {REG16,REG16,0}, "\320\2\x0F\xA6\110", IF_386|IF_UNDOC},
3772 {I_XBTS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xA6\110", IF_386|IF_SD|IF_UNDOC},
3773 {I_XBTS, 2, {REG32,REG32,0}, "\321\2\x0F\xA6\110", IF_386|IF_UNDOC},
3774 ITEMPLATE_END
3775 };
3776
3777 static struct itemplate instrux_XCHG[] = {
3778 {I_XCHG, 2, {REG_AX,REG16,0}, "\320\11\x90", IF_8086},
3779 {I_XCHG, 2, {REG_EAX,REG32,0}, "\321\11\x90", IF_386},
3780 {I_XCHG, 2, {REG16,REG_AX,0}, "\320\10\x90", IF_8086},
3781 {I_XCHG, 2, {REG32,REG_EAX,0}, "\321\10\x90", IF_386},
3782 {I_XCHG, 2, {REG8,MEMORY,0}, "\301\1\x86\110", IF_8086|IF_SM},
3783 {I_XCHG, 2, {REG8,REG8,0}, "\1\x86\110", IF_8086},
3784 {I_XCHG, 2, {REG16,MEMORY,0}, "\320\301\1\x87\110", IF_8086|IF_SM},
3785 {I_XCHG, 2, {REG16,REG16,0}, "\320\1\x87\110", IF_8086},
3786 {I_XCHG, 2, {REG32,MEMORY,0}, "\321\301\1\x87\110", IF_386|IF_SM},
3787 {I_XCHG, 2, {REG32,REG32,0}, "\321\1\x87\110", IF_386},
3788 {I_XCHG, 2, {MEMORY,REG8,0}, "\300\1\x86\101", IF_8086|IF_SM},
3789 {I_XCHG, 2, {REG8,REG8,0}, "\1\x86\101", IF_8086},
3790 {I_XCHG, 2, {MEMORY,REG16,0}, "\320\300\1\x87\101", IF_8086|IF_SM},
3791 {I_XCHG, 2, {REG16,REG16,0}, "\320\1\x87\101", IF_8086},
3792 {I_XCHG, 2, {MEMORY,REG32,0}, "\321\300\1\x87\101", IF_386|IF_SM},
3793 {I_XCHG, 2, {REG32,REG32,0}, "\321\1\x87\101", IF_386},
3794 ITEMPLATE_END
3795 };
3796
3797 static struct itemplate instrux_XLAT[] = {
3798 {I_XLAT, 0, {0,0,0}, "\1\xD7", IF_8086},
3799 ITEMPLATE_END
3800 };
3801
3802 static struct itemplate instrux_XLATB[] = {
3803 {I_XLATB, 0, {0,0,0}, "\1\xD7", IF_8086},
3804 ITEMPLATE_END
3805 };
3806
3807 static struct itemplate instrux_XOR[] = {
3808 {I_XOR, 2, {MEMORY,REG8,0}, "\300\1\x30\101", IF_8086|IF_SM},
3809 {I_XOR, 2, {REG8,REG8,0}, "\1\x30\101", IF_8086},
3810 {I_XOR, 2, {MEMORY,REG16,0}, "\320\300\1\x31\101", IF_8086|IF_SM},
3811 {I_XOR, 2, {REG16,REG16,0}, "\320\1\x31\101", IF_8086},
3812 {I_XOR, 2, {MEMORY,REG32,0}, "\321\300\1\x31\101", IF_386|IF_SM},
3813 {I_XOR, 2, {REG32,REG32,0}, "\321\1\x31\101", IF_386},
3814 {I_XOR, 2, {REG8,MEMORY,0}, "\301\1\x32\110", IF_8086|IF_SM},
3815 {I_XOR, 2, {REG8,REG8,0}, "\1\x32\110", IF_8086},
3816 {I_XOR, 2, {REG16,MEMORY,0}, "\320\301\1\x33\110", IF_8086|IF_SM},
3817 {I_XOR, 2, {REG16,REG16,0}, "\320\1\x33\110", IF_8086},
3818 {I_XOR, 2, {REG32,MEMORY,0}, "\321\301\1\x33\110", IF_386|IF_SM},
3819 {I_XOR, 2, {REG32,REG32,0}, "\321\1\x33\110", IF_386},
3820 {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\206\15", IF_8086},
3821 {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\206\15", IF_386},
3822 {I_XOR, 2, {REG_AL,IMMEDIATE,0}, "\1\x34\21", IF_8086|IF_SM},
3823 {I_XOR, 2, {REG_AX,SBYTE,0}, "\320\1\x83\206\15", IF_8086|IF_SM},
3824 {I_XOR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x35\31", IF_8086|IF_SM},
3825 {I_XOR, 2, {REG_EAX,SBYTE,0}, "\321\1\x83\206\15", IF_386|IF_SM},
3826 {I_XOR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x35\41", IF_386|IF_SM},
3827 {I_XOR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
3828 {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\134\1\x81\206\131", IF_8086|IF_SM},
3829 {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\144\1\x81\206\141", IF_386|IF_SM},
3830 {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
3831 {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\134\1\x81\206\131", IF_8086|IF_SM},
3832 {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\144\1\x81\206\141", IF_386|IF_SM},
3833 ITEMPLATE_END
3834 };
3835
3836 static struct itemplate instrux_XORPD[] = {
3837 {I_XORPD, 2, {XMMREG,XMMREG,0}, "\3\x66\x0F\x57\110", IF_WILLAMETTE|IF_SSE2},
3838 {I_XORPD, 2, {XMMREG,MEMORY,0}, "\301\3\x66\x0F\x57\110", IF_WILLAMETTE|IF_SSE2|IF_SM},
3839 ITEMPLATE_END
3840 };
3841
3842 static struct itemplate instrux_XORPS[] = {
3843 {I_XORPS, 2, {XMMREG,MEMORY,0}, "\301\2\x0F\x57\110", IF_KATMAI|IF_SSE},
3844 {I_XORPS, 2, {XMMREG,XMMREG,0}, "\2\x0F\x57\110", IF_KATMAI|IF_SSE},
3845 ITEMPLATE_END
3846 };
3847
3848 static struct itemplate instrux_XSTORE[] = {
3849 {I_XSTORE, 0, {0,0,0}, "\3\x0F\xA7\xC0", IF_P6|IF_CYRIX},
3850 ITEMPLATE_END
3851 };
3852
3853 static struct itemplate instrux_CMOVcc[] = {
3854 {I_CMOVcc, 2, {REG16,MEMORY,0}, "\320\301\1\x0F\330\x40\110", IF_P6|IF_SM},
3855 {I_CMOVcc, 2, {REG16,REG16,0}, "\320\1\x0F\330\x40\110", IF_P6},
3856 {I_CMOVcc, 2, {REG32,MEMORY,0}, "\321\301\1\x0F\330\x40\110", IF_P6|IF_SM},
3857 {I_CMOVcc, 2, {REG32,REG32,0}, "\321\1\x0F\330\x40\110", IF_P6},
3858 ITEMPLATE_END
3859 };
3860
3861 static struct itemplate instrux_Jcc[] = {
3862 {I_Jcc, 1, {IMMEDIATE|NEAR,0,0}, "\322\1\x0F\330\x80\64", IF_386},
3863 {I_Jcc, 1, {IMMEDIATE|BITS16|NEAR,0,0}, "\320\1\x0F\330\x80\64", IF_386},
3864 {I_Jcc, 1, {IMMEDIATE|BITS32|NEAR,0,0}, "\321\1\x0F\330\x80\64", IF_386},
3865 {I_Jcc, 1, {IMMEDIATE|SHORT,0,0}, "\330\x70\50", IF_8086},
3866 {I_Jcc, 1, {IMMEDIATE,0,0}, "\370\330\x70\50", IF_8086},
3867 {I_Jcc, 1, {IMMEDIATE,0,0}, "\1\x0F\330\x80\64", IF_386},
3868 {I_Jcc, 1, {IMMEDIATE,0,0}, "\330\x71\373\1\xE9\64", IF_8086},
3869 {I_Jcc, 1, {IMMEDIATE,0,0}, "\330\x70\50", IF_8086},
3870 ITEMPLATE_END
3871 };
3872
3873 static struct itemplate instrux_SETcc[] = {
3874 {I_SETcc, 1, {MEMORY,0,0}, "\300\1\x0F\330\x90\200", IF_386|IF_SB},
3875 {I_SETcc, 1, {REG8,0,0}, "\300\1\x0F\330\x90\200", IF_386},
3876 ITEMPLATE_END
3877 };
3878
3879 struct itemplate *nasm_instructions[] = {
3880 instrux_AAA,
3881 instrux_AAD,
3882 instrux_AAM,
3883 instrux_AAS,
3884 instrux_ADC,
3885 instrux_ADD,
3886 instrux_ADDPD,
3887 instrux_ADDPS,
3888 instrux_ADDSD,
3889 instrux_ADDSS,
3890 instrux_ADDSUBPD,
3891 instrux_ADDSUBPS,
3892 instrux_AND,
3893 instrux_ANDNPD,
3894 instrux_ANDNPS,
3895 instrux_ANDPD,
3896 instrux_ANDPS,
3897 instrux_ARPL,
3898 instrux_BOUND,
3899 instrux_BSF,
3900 instrux_BSR,
3901 instrux_BSWAP,
3902 instrux_BT,
3903 instrux_BTC,
3904 instrux_BTR,
3905 instrux_BTS,
3906 instrux_CALL,
3907 instrux_CBW,
3908 instrux_CDQ,
3909 instrux_CLC,
3910 instrux_CLD,
3911 instrux_CLFLUSH,
3912 instrux_CLI,
3913 instrux_CLTS,
3914 instrux_CMC,
3915 instrux_CMP,
3916 instrux_CMPEQPD,
3917 instrux_CMPEQPS,
3918 instrux_CMPEQSD,
3919 instrux_CMPEQSS,
3920 instrux_CMPLEPD,
3921 instrux_CMPLEPS,
3922 instrux_CMPLESD,
3923 instrux_CMPLESS,
3924 instrux_CMPLTPD,
3925 instrux_CMPLTPS,
3926 instrux_CMPLTSD,
3927 instrux_CMPLTSS,
3928 instrux_CMPNEQPD,
3929 instrux_CMPNEQPS,
3930 instrux_CMPNEQSD,
3931 instrux_CMPNEQSS,
3932 instrux_CMPNLEPD,
3933 instrux_CMPNLEPS,
3934 instrux_CMPNLESD,
3935 instrux_CMPNLESS,
3936 instrux_CMPNLTPD,
3937 instrux_CMPNLTPS,
3938 instrux_CMPNLTSD,
3939 instrux_CMPNLTSS,
3940 instrux_CMPORDPD,
3941 instrux_CMPORDPS,
3942 instrux_CMPORDSD,
3943 instrux_CMPORDSS,
3944 instrux_CMPPD,
3945 instrux_CMPPS,
3946 instrux_CMPSB,
3947 instrux_CMPSD,
3948 instrux_CMPSS,
3949 instrux_CMPSW,
3950 instrux_CMPUNORDPD,
3951 instrux_CMPUNORDPS,
3952 instrux_CMPUNORDSD,
3953 instrux_CMPUNORDSS,
3954 instrux_CMPXCHG,
3955 instrux_CMPXCHG486,
3956 instrux_CMPXCHG8B,
3957 instrux_COMISD,
3958 instrux_COMISS,
3959 instrux_CPUID,
3960 instrux_CVTDQ2PD,
3961 instrux_CVTDQ2PS,
3962 instrux_CVTPD2DQ,
3963 instrux_CVTPD2PI,
3964 instrux_CVTPD2PS,
3965 instrux_CVTPI2PD,
3966 instrux_CVTPI2PS,
3967 instrux_CVTPS2DQ,
3968 instrux_CVTPS2PD,
3969 instrux_CVTPS2PI,
3970 instrux_CVTSD2SI,
3971 instrux_CVTSD2SS,
3972 instrux_CVTSI2SD,
3973 instrux_CVTSI2SS,
3974 instrux_CVTSS2SD,
3975 instrux_CVTSS2SI,
3976 instrux_CVTTPD2DQ,
3977 instrux_CVTTPD2PI,
3978 instrux_CVTTPS2DQ,
3979 instrux_CVTTPS2PI,
3980 instrux_CVTTSD2SI,
3981 instrux_CVTTSS2SI,
3982 instrux_CWD,
3983 instrux_CWDE,
3984 instrux_DAA,
3985 instrux_DAS,
3986 instrux_DB,
3987 instrux_DD,
3988 instrux_DEC,
3989 instrux_DIV,
3990 instrux_DIVPD,
3991 instrux_DIVPS,
3992 instrux_DIVSD,
3993 instrux_DIVSS,
3994 instrux_DQ,
3995 instrux_DT,
3996 instrux_DW,
3997 instrux_EMMS,
3998 instrux_ENTER,
3999 instrux_EQU,
4000 instrux_F2XM1,
4001 instrux_FABS,
4002 instrux_FADD,
4003 instrux_FADDP,
4004 instrux_FBLD,
4005 instrux_FBSTP,
4006 instrux_FCHS,
4007 instrux_FCLEX,
4008 instrux_FCMOVB,
4009 instrux_FCMOVBE,
4010 instrux_FCMOVE,
4011 instrux_FCMOVNB,
4012 instrux_FCMOVNBE,
4013 instrux_FCMOVNE,
4014 instrux_FCMOVNU,
4015 instrux_FCMOVU,
4016 instrux_FCOM,
4017 instrux_FCOMI,
4018 instrux_FCOMIP,
4019 instrux_FCOMP,
4020 instrux_FCOMPP,
4021 instrux_FCOS,
4022 instrux_FDECSTP,
4023 instrux_FDISI,
4024 instrux_FDIV,
4025 instrux_FDIVP,
4026 instrux_FDIVR,
4027 instrux_FDIVRP,
4028 instrux_FEMMS,
4029 instrux_FENI,
4030 instrux_FFREE,
4031 instrux_FFREEP,
4032 instrux_FIADD,
4033 instrux_FICOM,
4034 instrux_FICOMP,
4035 instrux_FIDIV,
4036 instrux_FIDIVR,
4037 instrux_FILD,
4038 instrux_FIMUL,
4039 instrux_FINCSTP,
4040 instrux_FINIT,
4041 instrux_FIST,
4042 instrux_FISTP,
4043 instrux_FISTTP,
4044 instrux_FISUB,
4045 instrux_FISUBR,
4046 instrux_FLD,
4047 instrux_FLD1,
4048 instrux_FLDCW,
4049 instrux_FLDENV,
4050 instrux_FLDL2E,
4051 instrux_FLDL2T,
4052 instrux_FLDLG2,
4053 instrux_FLDLN2,
4054 instrux_FLDPI,
4055 instrux_FLDZ,
4056 instrux_FMUL,
4057 instrux_FMULP,
4058 instrux_FNCLEX,
4059 instrux_FNDISI,
4060 instrux_FNENI,
4061 instrux_FNINIT,
4062 instrux_FNOP,
4063 instrux_FNSAVE,
4064 instrux_FNSTCW,
4065 instrux_FNSTENV,
4066 instrux_FNSTSW,
4067 instrux_FPATAN,
4068 instrux_FPREM,
4069 instrux_FPREM1,
4070 instrux_FPTAN,
4071 instrux_FRNDINT,
4072 instrux_FRSTOR,
4073 instrux_FSAVE,
4074 instrux_FSCALE,
4075 instrux_FSETPM,
4076 instrux_FSIN,
4077 instrux_FSINCOS,
4078 instrux_FSQRT,
4079 instrux_FST,
4080 instrux_FSTCW,
4081 instrux_FSTENV,
4082 instrux_FSTP,
4083 instrux_FSTSW,
4084 instrux_FSUB,
4085 instrux_FSUBP,
4086 instrux_FSUBR,
4087 instrux_FSUBRP,
4088 instrux_FTST,
4089 instrux_FUCOM,
4090 instrux_FUCOMI,
4091 instrux_FUCOMIP,
4092 instrux_FUCOMP,
4093 instrux_FUCOMPP,
4094 instrux_FWAIT,
4095 instrux_FXAM,
4096 instrux_FXCH,
4097 instrux_FXRSTOR,
4098 instrux_FXSAVE,
4099 instrux_FXTRACT,
4100 instrux_FYL2X,
4101 instrux_FYL2XP1,
4102 instrux_HADDPD,
4103 instrux_HADDPS,
4104 instrux_HLT,
4105 instrux_HSUBPD,
4106 instrux_HSUBPS,
4107 instrux_IBTS,
4108 instrux_ICEBP,
4109 instrux_IDIV,
4110 instrux_IMUL,
4111 instrux_IN,
4112 instrux_INC,
4113 instrux_INCBIN,
4114 instrux_INSB,
4115 instrux_INSD,
4116 instrux_INSW,
4117 instrux_INT,
4118 instrux_INT01,
4119 instrux_INT03,
4120 instrux_INT1,
4121 instrux_INT3,
4122 instrux_INTO,
4123 instrux_INVD,
4124 instrux_INVLPG,
4125 instrux_IRET,
4126 instrux_IRETD,
4127 instrux_IRETW,
4128 instrux_JCXZ,
4129 instrux_JECXZ,
4130 instrux_JMP,
4131 instrux_JMPE,
4132 instrux_LAHF,
4133 instrux_LAR,
4134 instrux_LDDQU,
4135 instrux_LDMXCSR,
4136 instrux_LDS,
4137 instrux_LEA,
4138 instrux_LEAVE,
4139 instrux_LES,
4140 instrux_LFENCE,
4141 instrux_LFS,
4142 instrux_LGDT,
4143 instrux_LGS,
4144 instrux_LIDT,
4145 instrux_LLDT,
4146 instrux_LMSW,
4147 instrux_LOADALL,
4148 instrux_LOADALL286,
4149 instrux_LODSB,
4150 instrux_LODSD,
4151 instrux_LODSW,
4152 instrux_LOOP,
4153 instrux_LOOPE,
4154 instrux_LOOPNE,
4155 instrux_LOOPNZ,
4156 instrux_LOOPZ,
4157 instrux_LSL,
4158 instrux_LSS,
4159 instrux_LTR,
4160 instrux_MASKMOVDQU,
4161 instrux_MASKMOVQ,
4162 instrux_MAXPD,
4163 instrux_MAXPS,
4164 instrux_MAXSD,
4165 instrux_MAXSS,
4166 instrux_MFENCE,
4167 instrux_MINPD,
4168 instrux_MINPS,
4169 instrux_MINSD,
4170 instrux_MINSS,
4171 instrux_MONITOR,
4172 instrux_MOV,
4173 instrux_MOVAPD,
4174 instrux_MOVAPS,
4175 instrux_MOVD,
4176 instrux_MOVDDUP,
4177 instrux_MOVDQ2Q,
4178 instrux_MOVDQA,
4179 instrux_MOVDQU,
4180 instrux_MOVHLPS,
4181 instrux_MOVHPD,
4182 instrux_MOVHPS,
4183 instrux_MOVLHPS,
4184 instrux_MOVLPD,
4185 instrux_MOVLPS,
4186 instrux_MOVMSKPD,
4187 instrux_MOVMSKPS,
4188 instrux_MOVNTDQ,
4189 instrux_MOVNTI,
4190 instrux_MOVNTPD,
4191 instrux_MOVNTPS,
4192 instrux_MOVNTQ,
4193 instrux_MOVQ,
4194 instrux_MOVQ2DQ,
4195 instrux_MOVSB,
4196 instrux_MOVSD,
4197 instrux_MOVSHDUP,
4198 instrux_MOVSLDUP,
4199 instrux_MOVSS,
4200 instrux_MOVSW,
4201 instrux_MOVSX,
4202 instrux_MOVUPD,
4203 instrux_MOVUPS,
4204 instrux_MOVZX,
4205 instrux_MUL,
4206 instrux_MULPD,
4207 instrux_MULPS,
4208 instrux_MULSD,
4209 instrux_MULSS,
4210 instrux_MWAIT,
4211 instrux_NEG,
4212 instrux_NOP,
4213 instrux_NOT,
4214 instrux_OR,
4215 instrux_ORPD,
4216 instrux_ORPS,
4217 instrux_OUT,
4218 instrux_OUTSB,
4219 instrux_OUTSD,
4220 instrux_OUTSW,
4221 instrux_PACKSSDW,
4222 instrux_PACKSSWB,
4223 instrux_PACKUSWB,
4224 instrux_PADDB,
4225 instrux_PADDD,
4226 instrux_PADDQ,
4227 instrux_PADDSB,
4228 instrux_PADDSIW,
4229 instrux_PADDSW,
4230 instrux_PADDUSB,
4231 instrux_PADDUSW,
4232 instrux_PADDW,
4233 instrux_PAND,
4234 instrux_PANDN,
4235 instrux_PAUSE,
4236 instrux_PAVEB,
4237 instrux_PAVGB,
4238 instrux_PAVGUSB,
4239 instrux_PAVGW,
4240 instrux_PCMPEQB,
4241 instrux_PCMPEQD,
4242 instrux_PCMPEQW,
4243 instrux_PCMPGTB,
4244 instrux_PCMPGTD,
4245 instrux_PCMPGTW,
4246 instrux_PDISTIB,
4247 instrux_PEXTRW,
4248 instrux_PF2ID,
4249 instrux_PF2IW,
4250 instrux_PFACC,
4251 instrux_PFADD,
4252 instrux_PFCMPEQ,
4253 instrux_PFCMPGE,
4254 instrux_PFCMPGT,
4255 instrux_PFMAX,
4256 instrux_PFMIN,
4257 instrux_PFMUL,
4258 instrux_PFNACC,
4259 instrux_PFPNACC,
4260 instrux_PFRCP,
4261 instrux_PFRCPIT1,
4262 instrux_PFRCPIT2,
4263 instrux_PFRSQIT1,
4264 instrux_PFRSQRT,
4265 instrux_PFSUB,
4266 instrux_PFSUBR,
4267 instrux_PI2FD,
4268 instrux_PI2FW,
4269 instrux_PINSRW,
4270 instrux_PMACHRIW,
4271 instrux_PMADDWD,
4272 instrux_PMAGW,
4273 instrux_PMAXSW,
4274 instrux_PMAXUB,
4275 instrux_PMINSW,
4276 instrux_PMINUB,
4277 instrux_PMOVMSKB,
4278 instrux_PMULHRIW,
4279 instrux_PMULHRWA,
4280 instrux_PMULHRWC,
4281 instrux_PMULHUW,
4282 instrux_PMULHW,
4283 instrux_PMULLW,
4284 instrux_PMULUDQ,
4285 instrux_PMVGEZB,
4286 instrux_PMVLZB,
4287 instrux_PMVNZB,
4288 instrux_PMVZB,
4289 instrux_POP,
4290 instrux_POPA,
4291 instrux_POPAD,
4292 instrux_POPAW,
4293 instrux_POPF,
4294 instrux_POPFD,
4295 instrux_POPFW,
4296 instrux_POR,
4297 instrux_PREFETCH,
4298 instrux_PREFETCHNTA,
4299 instrux_PREFETCHT0,
4300 instrux_PREFETCHT1,
4301 instrux_PREFETCHT2,
4302 instrux_PREFETCHW,
4303 instrux_PSADBW,
4304 instrux_PSHUFD,
4305 instrux_PSHUFHW,
4306 instrux_PSHUFLW,
4307 instrux_PSHUFW,
4308 instrux_PSLLD,
4309 instrux_PSLLDQ,
4310 instrux_PSLLQ,
4311 instrux_PSLLW,
4312 instrux_PSRAD,
4313 instrux_PSRAW,
4314 instrux_PSRLD,
4315 instrux_PSRLDQ,
4316 instrux_PSRLQ,
4317 instrux_PSRLW,
4318 instrux_PSUBB,
4319 instrux_PSUBD,
4320 instrux_PSUBQ,
4321 instrux_PSUBSB,
4322 instrux_PSUBSIW,
4323 instrux_PSUBSW,
4324 instrux_PSUBUSB,
4325 instrux_PSUBUSW,
4326 instrux_PSUBW,
4327 instrux_PSWAPD,
4328 instrux_PUNPCKHBW,
4329 instrux_PUNPCKHDQ,
4330 instrux_PUNPCKHQDQ,
4331 instrux_PUNPCKHWD,
4332 instrux_PUNPCKLBW,
4333 instrux_PUNPCKLDQ,
4334 instrux_PUNPCKLQDQ,
4335 instrux_PUNPCKLWD,
4336 instrux_PUSH,
4337 instrux_PUSHA,
4338 instrux_PUSHAD,
4339 instrux_PUSHAW,
4340 instrux_PUSHF,
4341 instrux_PUSHFD,
4342 instrux_PUSHFW,
4343 instrux_PXOR,
4344 instrux_RCL,
4345 instrux_RCPPS,
4346 instrux_RCPSS,
4347 instrux_RCR,
4348 instrux_RDMSR,
4349 instrux_RDPMC,
4350 instrux_RDSHR,
4351 instrux_RDTSC,
4352 instrux_RESB,
4353 instrux_RESD,
4354 instrux_RESQ,
4355 instrux_REST,
4356 instrux_RESW,
4357 instrux_RET,
4358 instrux_RETF,
4359 instrux_RETN,
4360 instrux_ROL,
4361 instrux_ROR,
4362 instrux_RSDC,
4363 instrux_RSLDT,
4364 instrux_RSM,
4365 instrux_RSQRTPS,
4366 instrux_RSQRTSS,
4367 instrux_RSTS,
4368 instrux_SAHF,
4369 instrux_SAL,
4370 instrux_SALC,
4371 instrux_SAR,
4372 instrux_SBB,
4373 instrux_SCASB,
4374 instrux_SCASD,
4375 instrux_SCASW,
4376 instrux_SFENCE,
4377 instrux_SGDT,
4378 instrux_SHL,
4379 instrux_SHLD,
4380 instrux_SHR,
4381 instrux_SHRD,
4382 instrux_SHUFPD,
4383 instrux_SHUFPS,
4384 instrux_SIDT,
4385 instrux_SLDT,
4386 instrux_SMI,
4387 instrux_SMINT,
4388 instrux_SMINTOLD,
4389 instrux_SMSW,
4390 instrux_SQRTPD,
4391 instrux_SQRTPS,
4392 instrux_SQRTSD,
4393 instrux_SQRTSS,
4394 instrux_STC,
4395 instrux_STD,
4396 instrux_STI,
4397 instrux_STMXCSR,
4398 instrux_STOSB,
4399 instrux_STOSD,
4400 instrux_STOSW,
4401 instrux_STR,
4402 instrux_SUB,
4403 instrux_SUBPD,
4404 instrux_SUBPS,
4405 instrux_SUBSD,
4406 instrux_SUBSS,
4407 instrux_SVDC,
4408 instrux_SVLDT,
4409 instrux_SVTS,
4410 instrux_SYSCALL,
4411 instrux_SYSENTER,
4412 instrux_SYSEXIT,
4413 instrux_SYSRET,
4414 instrux_TEST,
4415 instrux_UCOMISD,
4416 instrux_UCOMISS,
4417 instrux_UD0,
4418 instrux_UD1,
4419 instrux_UD2,
4420 instrux_UMOV,
4421 instrux_UNPCKHPD,
4422 instrux_UNPCKHPS,
4423 instrux_UNPCKLPD,
4424 instrux_UNPCKLPS,
4425 instrux_VERR,
4426 instrux_VERW,
4427 instrux_WAIT,
4428 instrux_WBINVD,
4429 instrux_WRMSR,
4430 instrux_WRSHR,
4431 instrux_XADD,
4432 instrux_XBTS,
4433 instrux_XCHG,
4434 instrux_XLAT,
4435 instrux_XLATB,
4436 instrux_XOR,
4437 instrux_XORPD,
4438 instrux_XORPS,
4439 instrux_XSTORE,
4440 instrux_CMOVcc,
4441 instrux_Jcc,
4442 instrux_SETcc,
4443 };