- tftp_send_optack() was not 64-bit clean (patch from SF bug #1787500)
[bochs-mirror.git] / cpu / fetchdecode.h
blob52bdc2fbf9882e8c0e7ac68dc4cb497830236ec2
1 /////////////////////////////////////////////////////////////////////////
2 // $Id: fetchdecode.h,v 1.30 2007/08/31 18:09:34 sshwarts Exp $
3 /////////////////////////////////////////////////////////////////////////
4 //
5 // Copyright (c) 2005 Stanislav Shwartsman
6 // Written by Stanislav Shwartsman [sshwarts at sourceforge net]
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU Lesser General Public
10 // License as published by the Free Software Foundation; either
11 // version 2 of the License, or (at your option) any later version.
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 /////////////////////////////////////////////////////////////////////////
25 #ifndef BX_COMMON_FETCHDECODE_TABLES_H
26 #define BX_COMMON_FETCHDECODE_TABLES_H
29 // This file contains common IA-32/IA-64 opcode tables, like FPU opcode
30 // table, 3DNow! opcode table or SSE opcode groups (choose the opcode
31 // according to instruction prefixes)
34 BX_CPP_INLINE Bit16u FetchWORD(Bit8u *iptr)
36 Bit16u data;
37 ReadHostWordFromLittleEndian(iptr, data);
38 return data;
41 BX_CPP_INLINE Bit32u FetchDWORD(Bit8u *iptr)
43 Bit32u data;
44 ReadHostDWordFromLittleEndian(iptr, data);
45 return data;
48 #if BX_SUPPORT_X86_64
49 BX_CPP_INLINE Bit64u FetchQWORD(Bit8u *iptr)
51 Bit64u data;
52 ReadHostQWordFromLittleEndian(iptr, data);
53 return data;
55 #endif
58 // Common FetchDecode Opcode Tables
61 static const BxOpcodeInfo_t opcodesADD_EwIw[2] = {
62 /* M */ { BxLockable, &BX_CPU_C::ADD_EEwIw },
63 /* R */ { 0, &BX_CPU_C::ADD_EGwIw }
66 static const BxOpcodeInfo_t opcodesADD_EdId[2] = {
67 /* M */ { BxLockable, &BX_CPU_C::ADD_EEdId },
68 /* R */ { 0, &BX_CPU_C::ADD_EGdId }
71 static const BxOpcodeInfo_t opcodesADD_GwEw[2] = {
72 /* M */ { 0, &BX_CPU_C::ADD_GwEEw },
73 /* R */ { 0, &BX_CPU_C::ADD_GwEGw }
76 static const BxOpcodeInfo_t opcodesADD_GdEd[2] = {
77 /* M */ { 0, &BX_CPU_C::ADD_GdEEd },
78 /* R */ { 0, &BX_CPU_C::ADD_GdEGd }
81 static const BxOpcodeInfo_t opcodesMOV_GbEb[2] = {
82 /* M */ { 0, &BX_CPU_C::MOV_GbEEb },
83 /* R */ { 0, &BX_CPU_C::MOV_GbEGb }
86 static const BxOpcodeInfo_t opcodesMOV_GwEw[2] = {
87 /* M */ { 0, &BX_CPU_C::MOV_GwEEw },
88 /* R */ { 0, &BX_CPU_C::MOV_GwEGw }
91 static const BxOpcodeInfo_t opcodesMOV_GdEd[2] = {
92 /* M */ { 0, &BX_CPU_C::MOV_GdEEd },
93 /* R */ { 0, &BX_CPU_C::MOV_GdEGd }
96 static const BxOpcodeInfo_t opcodesMOV_EbGb[2] = {
97 /* M */ { 0, &BX_CPU_C::MOV_EEbGb },
98 /* R */ { 0, &BX_CPU_C::MOV_EGbGb }
101 static const BxOpcodeInfo_t opcodesMOV_EwGw[2] = {
102 /* M */ { 0, &BX_CPU_C::MOV_EEwGw },
103 /* R */ { 0, &BX_CPU_C::MOV_EGwGw }
106 static const BxOpcodeInfo_t opcodesMOV_EdGd[2] = {
107 /* M */ { 0, &BX_CPU_C::MOV_EEdGd },
108 /* R */ { 0, &BX_CPU_C::MOV_EGdGd }
112 #if BX_SUPPORT_FPU
114 /* ************************************************************************ */
115 /* FPU Opcodes */
117 // floating point instructions when mod!=11b.
118 // the following tables will be accessed like groups using the nnn (reg) field of
119 // the modrm byte. (the first byte is D8-DF)
121 // D8 (modrm is outside 00h - BFh) (mod != 11)
122 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupD8[8] = {
123 /* 0 */ { 0, &BX_CPU_C::FADD_SINGLE_REAL },
124 /* 1 */ { 0, &BX_CPU_C::FMUL_SINGLE_REAL },
125 /* 2 */ { 0, &BX_CPU_C::FCOM_SINGLE_REAL },
126 /* 3 */ { 0, &BX_CPU_C::FCOM_SINGLE_REAL }, // FCOMP_SINGLE_REAL
127 /* 4 */ { 0, &BX_CPU_C::FSUB_SINGLE_REAL },
128 /* 5 */ { 0, &BX_CPU_C::FSUBR_SINGLE_REAL },
129 /* 6 */ { 0, &BX_CPU_C::FDIV_SINGLE_REAL },
130 /* 7 */ { 0, &BX_CPU_C::FDIVR_SINGLE_REAL }
133 // D9 (modrm is outside 00h - BFh) (mod != 11)
134 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupD9[8] = {
135 /* 0 */ { 0, &BX_CPU_C::FLD_SINGLE_REAL },
136 /* 1 */ { 0, &BX_CPU_C::BxError },
137 /* 2 */ { 0, &BX_CPU_C::FST_SINGLE_REAL },
138 /* 3 */ { 0, &BX_CPU_C::FST_SINGLE_REAL }, // FSTP_SINGLE_REAL
139 /* 4 */ { 0, &BX_CPU_C::FLDENV },
140 /* 5 */ { 0, &BX_CPU_C::FLDCW },
141 /* 6 */ { 0, &BX_CPU_C::FNSTENV },
142 /* 7 */ { 0, &BX_CPU_C::FNSTCW }
145 // DA (modrm is outside 00h - BFh) (mod != 11)
146 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDA[8] = {
147 /* 0 */ { 0, &BX_CPU_C::FIADD_DWORD_INTEGER },
148 /* 1 */ { 0, &BX_CPU_C::FIMUL_DWORD_INTEGER },
149 /* 2 */ { 0, &BX_CPU_C::FICOM_DWORD_INTEGER },
150 /* 3 */ { 0, &BX_CPU_C::FICOM_DWORD_INTEGER }, // FICOMP_DWORD_INTEGER
151 /* 4 */ { 0, &BX_CPU_C::FISUB_DWORD_INTEGER },
152 /* 5 */ { 0, &BX_CPU_C::FISUBR_DWORD_INTEGER },
153 /* 6 */ { 0, &BX_CPU_C::FIDIV_DWORD_INTEGER },
154 /* 7 */ { 0, &BX_CPU_C::FIDIVR_DWORD_INTEGER }
157 // DB (modrm is outside 00h - BFh) (mod != 11)
158 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDB[8] = {
159 /* 0 */ { 0, &BX_CPU_C::FILD_DWORD_INTEGER },
160 /* 1 */ { 0, &BX_CPU_C::FISTTP32 },
161 /* 2 */ { 0, &BX_CPU_C::FIST_DWORD_INTEGER },
162 /* 3 */ { 0, &BX_CPU_C::FIST_DWORD_INTEGER }, // FISTP_DWORD_INTEGER
163 /* 4 */ { 0, &BX_CPU_C::BxError },
164 /* 5 */ { 0, &BX_CPU_C::FLD_EXTENDED_REAL },
165 /* 6 */ { 0, &BX_CPU_C::BxError },
166 /* 7 */ { 0, &BX_CPU_C::FSTP_EXTENDED_REAL }
169 // DC (modrm is outside 00h - BFh) (mod != 11)
170 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDC[8] = {
171 /* 0 */ { 0, &BX_CPU_C::FADD_DOUBLE_REAL },
172 /* 1 */ { 0, &BX_CPU_C::FMUL_DOUBLE_REAL },
173 /* 2 */ { 0, &BX_CPU_C::FCOM_DOUBLE_REAL },
174 /* 3 */ { 0, &BX_CPU_C::FCOM_DOUBLE_REAL }, // FCOMP_DOUBLE_REAL
175 /* 4 */ { 0, &BX_CPU_C::FSUB_DOUBLE_REAL },
176 /* 5 */ { 0, &BX_CPU_C::FSUBR_DOUBLE_REAL },
177 /* 6 */ { 0, &BX_CPU_C::FDIV_DOUBLE_REAL },
178 /* 7 */ { 0, &BX_CPU_C::FDIVR_DOUBLE_REAL }
181 // DD (modrm is outside 00h - BFh) (mod != 11)
182 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDD[8] = {
183 /* 0 */ { 0, &BX_CPU_C::FLD_DOUBLE_REAL },
184 /* 1 */ { 0, &BX_CPU_C::FISTTP64 },
185 /* 2 */ { 0, &BX_CPU_C::FST_DOUBLE_REAL },
186 /* 3 */ { 0, &BX_CPU_C::FST_DOUBLE_REAL }, // FSTP_DOUBLE_REAL
187 /* 4 */ { 0, &BX_CPU_C::FRSTOR },
188 /* 5 */ { 0, &BX_CPU_C::BxError },
189 /* 6 */ { 0, &BX_CPU_C::FNSAVE },
190 /* 7 */ { 0, &BX_CPU_C::FNSTSW }
193 // DE (modrm is outside 00h - BFh) (mod != 11)
194 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDE[8] = {
195 /* 0 */ { 0, &BX_CPU_C::FIADD_WORD_INTEGER },
196 /* 1 */ { 0, &BX_CPU_C::FIMUL_WORD_INTEGER },
197 /* 2 */ { 0, &BX_CPU_C::FICOM_WORD_INTEGER },
198 /* 3 */ { 0, &BX_CPU_C::FICOM_WORD_INTEGER }, // FICOMP_WORD_INTEGER
199 /* 4 */ { 0, &BX_CPU_C::FISUB_WORD_INTEGER },
200 /* 5 */ { 0, &BX_CPU_C::FISUBR_WORD_INTEGER },
201 /* 6 */ { 0, &BX_CPU_C::FIDIV_WORD_INTEGER },
202 /* 7 */ { 0, &BX_CPU_C::FIDIVR_WORD_INTEGER }
205 // DF (modrm is outside 00h - BFh) (mod != 11)
206 static const BxOpcodeInfo_t BxOpcodeInfo_FPGroupDF[8] = {
207 /* 0 */ { 0, &BX_CPU_C::FILD_WORD_INTEGER },
208 /* 1 */ { 0, &BX_CPU_C::FISTTP16 },
209 /* 2 */ { 0, &BX_CPU_C::FIST_WORD_INTEGER },
210 /* 3 */ { 0, &BX_CPU_C::FIST_WORD_INTEGER }, // FISTP_WORD_INTEGER
211 /* 4 */ { 0, &BX_CPU_C::FBLD_PACKED_BCD },
212 /* 5 */ { 0, &BX_CPU_C::FILD_QWORD_INTEGER },
213 /* 6 */ { 0, &BX_CPU_C::FBSTP_PACKED_BCD },
214 /* 7 */ { 0, &BX_CPU_C::FISTP_QWORD_INTEGER }
217 // 512 entries for second byte of floating point instructions. (when mod==11b)
218 static const BxOpcodeInfo_t BxOpcodeInfo_FloatingPoint[512] = {
219 // D8 (modrm is outside 00h - BFh) (mod == 11)
220 /* D8 C0 */ { 0, &BX_CPU_C::FADD_ST0_STj },
221 /* D8 C1 */ { 0, &BX_CPU_C::FADD_ST0_STj },
222 /* D8 C2 */ { 0, &BX_CPU_C::FADD_ST0_STj },
223 /* D8 C3 */ { 0, &BX_CPU_C::FADD_ST0_STj },
224 /* D8 C4 */ { 0, &BX_CPU_C::FADD_ST0_STj },
225 /* D8 C5 */ { 0, &BX_CPU_C::FADD_ST0_STj },
226 /* D8 C6 */ { 0, &BX_CPU_C::FADD_ST0_STj },
227 /* D8 C7 */ { 0, &BX_CPU_C::FADD_ST0_STj },
228 /* D8 C8 */ { 0, &BX_CPU_C::FMUL_ST0_STj },
229 /* D8 C9 */ { 0, &BX_CPU_C::FMUL_ST0_STj },
230 /* D8 CA */ { 0, &BX_CPU_C::FMUL_ST0_STj },
231 /* D8 CB */ { 0, &BX_CPU_C::FMUL_ST0_STj },
232 /* D8 CC */ { 0, &BX_CPU_C::FMUL_ST0_STj },
233 /* D8 CD */ { 0, &BX_CPU_C::FMUL_ST0_STj },
234 /* D8 CE */ { 0, &BX_CPU_C::FMUL_ST0_STj },
235 /* D8 CF */ { 0, &BX_CPU_C::FMUL_ST0_STj },
236 /* D8 D0 */ { 0, &BX_CPU_C::FCOM_STi },
237 /* D8 D1 */ { 0, &BX_CPU_C::FCOM_STi },
238 /* D8 D2 */ { 0, &BX_CPU_C::FCOM_STi },
239 /* D8 D3 */ { 0, &BX_CPU_C::FCOM_STi },
240 /* D8 D4 */ { 0, &BX_CPU_C::FCOM_STi },
241 /* D8 D5 */ { 0, &BX_CPU_C::FCOM_STi },
242 /* D8 D6 */ { 0, &BX_CPU_C::FCOM_STi },
243 /* D8 D7 */ { 0, &BX_CPU_C::FCOM_STi },
244 /* D8 D8 */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
245 /* D8 D9 */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
246 /* D8 DA */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
247 /* D8 DB */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
248 /* D8 DC */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
249 /* D8 DD */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
250 /* D8 DE */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
251 /* D8 DF */ { 0, &BX_CPU_C::FCOM_STi }, // FCOMP
252 /* D8 E0 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
253 /* D8 E1 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
254 /* D8 E2 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
255 /* D8 E3 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
256 /* D8 E4 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
257 /* D8 E5 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
258 /* D8 E6 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
259 /* D8 E7 */ { 0, &BX_CPU_C::FSUB_ST0_STj },
260 /* D8 E8 */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
261 /* D8 E9 */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
262 /* D8 EA */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
263 /* D8 EB */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
264 /* D8 EC */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
265 /* D8 ED */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
266 /* D8 EE */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
267 /* D8 EF */ { 0, &BX_CPU_C::FSUBR_ST0_STj },
268 /* D8 F0 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
269 /* D8 F1 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
270 /* D8 F2 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
271 /* D8 F3 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
272 /* D8 F4 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
273 /* D8 F5 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
274 /* D8 F6 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
275 /* D8 F7 */ { 0, &BX_CPU_C::FDIV_ST0_STj },
276 /* D8 F8 */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
277 /* D8 F9 */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
278 /* D8 FA */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
279 /* D8 FB */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
280 /* D8 FC */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
281 /* D8 FD */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
282 /* D8 FE */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
283 /* D8 FF */ { 0, &BX_CPU_C::FDIVR_ST0_STj },
285 // D9 (modrm is outside 00h - BFh) (mod == 11)
286 /* D9 C0 */ { 0, &BX_CPU_C::FLD_STi },
287 /* D9 C1 */ { 0, &BX_CPU_C::FLD_STi },
288 /* D9 C2 */ { 0, &BX_CPU_C::FLD_STi },
289 /* D9 C3 */ { 0, &BX_CPU_C::FLD_STi },
290 /* D9 C4 */ { 0, &BX_CPU_C::FLD_STi },
291 /* D9 C5 */ { 0, &BX_CPU_C::FLD_STi },
292 /* D9 C6 */ { 0, &BX_CPU_C::FLD_STi },
293 /* D9 C7 */ { 0, &BX_CPU_C::FLD_STi },
294 /* D9 C8 */ { 0, &BX_CPU_C::FXCH_STi },
295 /* D9 C9 */ { 0, &BX_CPU_C::FXCH_STi },
296 /* D9 CA */ { 0, &BX_CPU_C::FXCH_STi },
297 /* D9 CB */ { 0, &BX_CPU_C::FXCH_STi },
298 /* D9 CC */ { 0, &BX_CPU_C::FXCH_STi },
299 /* D9 CD */ { 0, &BX_CPU_C::FXCH_STi },
300 /* D9 CE */ { 0, &BX_CPU_C::FXCH_STi },
301 /* D9 CF */ { 0, &BX_CPU_C::FXCH_STi },
302 /* D9 D0 */ { 0, &BX_CPU_C::FNOP },
303 /* D9 D1 */ { 0, &BX_CPU_C::BxError },
304 /* D9 D2 */ { 0, &BX_CPU_C::BxError },
305 /* D9 D3 */ { 0, &BX_CPU_C::BxError },
306 /* D9 D4 */ { 0, &BX_CPU_C::BxError },
307 /* D9 D5 */ { 0, &BX_CPU_C::BxError },
308 /* D9 D6 */ { 0, &BX_CPU_C::BxError },
309 /* D9 D7 */ { 0, &BX_CPU_C::BxError },
310 /* D9 D8 */ { 0, &BX_CPU_C::BxError },
311 /* D9 D9 */ { 0, &BX_CPU_C::BxError },
312 /* D9 DA */ { 0, &BX_CPU_C::BxError },
313 /* D9 DB */ { 0, &BX_CPU_C::BxError },
314 /* D9 DC */ { 0, &BX_CPU_C::BxError },
315 /* D9 DD */ { 0, &BX_CPU_C::BxError },
316 /* D9 DE */ { 0, &BX_CPU_C::BxError },
317 /* D9 DF */ { 0, &BX_CPU_C::BxError },
318 /* D9 E0 */ { 0, &BX_CPU_C::FCHS },
319 /* D9 E1 */ { 0, &BX_CPU_C::FABS },
320 /* D9 E2 */ { 0, &BX_CPU_C::BxError },
321 /* D9 E3 */ { 0, &BX_CPU_C::BxError },
322 /* D9 E4 */ { 0, &BX_CPU_C::FTST },
323 /* D9 E5 */ { 0, &BX_CPU_C::FXAM },
324 /* D9 E6 */ { 0, &BX_CPU_C::BxError },
325 /* D9 E7 */ { 0, &BX_CPU_C::BxError },
326 /* D9 E8 */ { 0, &BX_CPU_C::FLD1 },
327 /* D9 E9 */ { 0, &BX_CPU_C::FLDL2T },
328 /* D9 EA */ { 0, &BX_CPU_C::FLDL2E },
329 /* D9 EB */ { 0, &BX_CPU_C::FLDPI },
330 /* D9 EC */ { 0, &BX_CPU_C::FLDLG2 },
331 /* D9 ED */ { 0, &BX_CPU_C::FLDLN2 },
332 /* D9 EE */ { 0, &BX_CPU_C::FLDZ },
333 /* D9 EF */ { 0, &BX_CPU_C::BxError },
334 /* D9 F0 */ { 0, &BX_CPU_C::F2XM1 },
335 /* D9 F1 */ { 0, &BX_CPU_C::FYL2X },
336 /* D9 F2 */ { 0, &BX_CPU_C::FPTAN },
337 /* D9 F3 */ { 0, &BX_CPU_C::FPATAN },
338 /* D9 F4 */ { 0, &BX_CPU_C::FXTRACT },
339 /* D9 F5 */ { 0, &BX_CPU_C::FPREM1 },
340 /* D9 F6 */ { 0, &BX_CPU_C::FDECSTP },
341 /* D9 F7 */ { 0, &BX_CPU_C::FINCSTP },
342 /* D9 F8 */ { 0, &BX_CPU_C::FPREM },
343 /* D9 F9 */ { 0, &BX_CPU_C::FYL2XP1 },
344 /* D9 FA */ { 0, &BX_CPU_C::FSQRT },
345 /* D9 FB */ { 0, &BX_CPU_C::FSINCOS },
346 /* D9 FC */ { 0, &BX_CPU_C::FRNDINT },
347 /* D9 FD */ { 0, &BX_CPU_C::FSCALE },
348 /* D9 FE */ { 0, &BX_CPU_C::FSIN },
349 /* D9 FF */ { 0, &BX_CPU_C::FCOS },
351 // DA (modrm is outside 00h - BFh) (mod == 11)
352 /* DA C0 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
353 /* DA C1 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
354 /* DA C2 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
355 /* DA C3 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
356 /* DA C4 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
357 /* DA C5 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
358 /* DA C6 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
359 /* DA C7 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
360 /* DA C8 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
361 /* DA C9 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
362 /* DA CA */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
363 /* DA CB */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
364 /* DA CC */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
365 /* DA CD */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
366 /* DA CE */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
367 /* DA CF */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
368 /* DA D0 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
369 /* DA D1 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
370 /* DA D2 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
371 /* DA D3 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
372 /* DA D4 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
373 /* DA D5 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
374 /* DA D6 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
375 /* DA D7 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
376 /* DA D8 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
377 /* DA D9 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
378 /* DA DA */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
379 /* DA DB */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
380 /* DA DC */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
381 /* DA DD */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
382 /* DA DE */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
383 /* DA DF */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
384 /* DA E0 */ { 0, &BX_CPU_C::BxError },
385 /* DA E1 */ { 0, &BX_CPU_C::BxError },
386 /* DA E2 */ { 0, &BX_CPU_C::BxError },
387 /* DA E3 */ { 0, &BX_CPU_C::BxError },
388 /* DA E4 */ { 0, &BX_CPU_C::BxError },
389 /* DA E5 */ { 0, &BX_CPU_C::BxError },
390 /* DA E6 */ { 0, &BX_CPU_C::BxError },
391 /* DA E7 */ { 0, &BX_CPU_C::BxError },
392 /* DA E8 */ { 0, &BX_CPU_C::BxError },
393 /* DA E9 */ { 0, &BX_CPU_C::FUCOMPP },
394 /* DA EA */ { 0, &BX_CPU_C::BxError },
395 /* DA EB */ { 0, &BX_CPU_C::BxError },
396 /* DA EC */ { 0, &BX_CPU_C::BxError },
397 /* DA ED */ { 0, &BX_CPU_C::BxError },
398 /* DA EE */ { 0, &BX_CPU_C::BxError },
399 /* DA EF */ { 0, &BX_CPU_C::BxError },
400 /* DA F0 */ { 0, &BX_CPU_C::BxError },
401 /* DA F1 */ { 0, &BX_CPU_C::BxError },
402 /* DA F2 */ { 0, &BX_CPU_C::BxError },
403 /* DA F3 */ { 0, &BX_CPU_C::BxError },
404 /* DA F4 */ { 0, &BX_CPU_C::BxError },
405 /* DA F5 */ { 0, &BX_CPU_C::BxError },
406 /* DA F6 */ { 0, &BX_CPU_C::BxError },
407 /* DA F7 */ { 0, &BX_CPU_C::BxError },
408 /* DA F8 */ { 0, &BX_CPU_C::BxError },
409 /* DA F9 */ { 0, &BX_CPU_C::BxError },
410 /* DA FA */ { 0, &BX_CPU_C::BxError },
411 /* DA FB */ { 0, &BX_CPU_C::BxError },
412 /* DA FC */ { 0, &BX_CPU_C::BxError },
413 /* DA FD */ { 0, &BX_CPU_C::BxError },
414 /* DA FE */ { 0, &BX_CPU_C::BxError },
415 /* DA FF */ { 0, &BX_CPU_C::BxError },
417 // DB (modrm is outside 00h - BFh) (mod == 11)
418 /* DB C0 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
419 /* DB C1 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
420 /* DB C2 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
421 /* DB C3 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
422 /* DB C4 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
423 /* DB C5 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
424 /* DB C6 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
425 /* DB C7 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
426 /* DB C8 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
427 /* DB C9 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
428 /* DB CA */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
429 /* DB CB */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
430 /* DB CC */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
431 /* DB CD */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
432 /* DB CE */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
433 /* DB CF */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
434 /* DB D0 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
435 /* DB D1 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
436 /* DB D2 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
437 /* DB D3 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
438 /* DB D4 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
439 /* DB D5 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
440 /* DB D6 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
441 /* DB D7 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
442 /* DB D8 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
443 /* DB D9 */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
444 /* DB DA */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
445 /* DB DB */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
446 /* DB DC */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
447 /* DB DD */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
448 /* DB DE */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
449 /* DB DF */ { 0, &BX_CPU_C::FCMOV_ST0_STj },
450 /* DB E0 */ { 0, &BX_CPU_C::FPLEGACY }, // feni (287 only)
451 /* DB E1 */ { 0, &BX_CPU_C::FPLEGACY }, // fdisi (287 only)
452 /* DB E2 */ { 0, &BX_CPU_C::FNCLEX },
453 /* DB E3 */ { 0, &BX_CPU_C::FNINIT },
454 /* DB E4 */ { 0, &BX_CPU_C::FPLEGACY }, // fsetpm (287 only)
455 /* DB E5 */ { 0, &BX_CPU_C::BxError },
456 /* DB E6 */ { 0, &BX_CPU_C::BxError },
457 /* DB E7 */ { 0, &BX_CPU_C::BxError },
458 /* DB E8 */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
459 /* DB E9 */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
460 /* DB EA */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
461 /* DB EB */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
462 /* DB EC */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
463 /* DB ED */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
464 /* DB EE */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
465 /* DB EF */ { 0, &BX_CPU_C::FUCOMI_ST0_STj },
466 /* DB F0 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
467 /* DB F1 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
468 /* DB F2 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
469 /* DB F3 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
470 /* DB F4 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
471 /* DB F5 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
472 /* DB F6 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
473 /* DB F7 */ { 0, &BX_CPU_C::FCOMI_ST0_STj },
474 /* DB F8 */ { 0, &BX_CPU_C::BxError },
475 /* DB F9 */ { 0, &BX_CPU_C::BxError },
476 /* DB FA */ { 0, &BX_CPU_C::BxError },
477 /* DB FB */ { 0, &BX_CPU_C::BxError },
478 /* DB FC */ { 0, &BX_CPU_C::BxError },
479 /* DB FD */ { 0, &BX_CPU_C::BxError },
480 /* DB FE */ { 0, &BX_CPU_C::BxError },
481 /* DB FF */ { 0, &BX_CPU_C::BxError },
483 // DC (modrm is outside 00h - BFh) (mod == 11)
484 /* DC C0 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
485 /* DC C1 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
486 /* DC C2 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
487 /* DC C3 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
488 /* DC C4 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
489 /* DC C5 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
490 /* DC C6 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
491 /* DC C7 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
492 /* DC C8 */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
493 /* DC C9 */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
494 /* DC CA */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
495 /* DC CB */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
496 /* DC CC */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
497 /* DC CD */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
498 /* DC CE */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
499 /* DC CF */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
500 /* DC D0 */ { 0, &BX_CPU_C::BxError },
501 /* DC D1 */ { 0, &BX_CPU_C::BxError },
502 /* DC D2 */ { 0, &BX_CPU_C::BxError },
503 /* DC D3 */ { 0, &BX_CPU_C::BxError },
504 /* DC D4 */ { 0, &BX_CPU_C::BxError },
505 /* DC D5 */ { 0, &BX_CPU_C::BxError },
506 /* DC D6 */ { 0, &BX_CPU_C::BxError },
507 /* DC D7 */ { 0, &BX_CPU_C::BxError },
508 /* DC D8 */ { 0, &BX_CPU_C::BxError },
509 /* DC D9 */ { 0, &BX_CPU_C::BxError },
510 /* DC DA */ { 0, &BX_CPU_C::BxError },
511 /* DC DB */ { 0, &BX_CPU_C::BxError },
512 /* DC DC */ { 0, &BX_CPU_C::BxError },
513 /* DC DD */ { 0, &BX_CPU_C::BxError },
514 /* DC DE */ { 0, &BX_CPU_C::BxError },
515 /* DC DF */ { 0, &BX_CPU_C::BxError },
516 /* DC E0 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
517 /* DC E1 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
518 /* DC E2 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
519 /* DC E3 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
520 /* DC E4 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
521 /* DC E5 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
522 /* DC E6 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
523 /* DC E7 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
524 /* DC E8 */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
525 /* DC E9 */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
526 /* DC EA */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
527 /* DC EB */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
528 /* DC EC */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
529 /* DC ED */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
530 /* DC EE */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
531 /* DC EF */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
532 /* DC F0 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
533 /* DC F1 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
534 /* DC F2 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
535 /* DC F3 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
536 /* DC F4 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
537 /* DC F5 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
538 /* DC F6 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
539 /* DC F7 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
540 /* DC F8 */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
541 /* DC F9 */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
542 /* DC FA */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
543 /* DC FB */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
544 /* DC FC */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
545 /* DC FD */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
546 /* DC FE */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
547 /* DC FF */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
549 // DD (modrm is outside 00h - BFh) (mod == 11)
550 /* DD C0 */ { 0, &BX_CPU_C::FFREE_STi },
551 /* DD C1 */ { 0, &BX_CPU_C::FFREE_STi },
552 /* DD C2 */ { 0, &BX_CPU_C::FFREE_STi },
553 /* DD C3 */ { 0, &BX_CPU_C::FFREE_STi },
554 /* DD C4 */ { 0, &BX_CPU_C::FFREE_STi },
555 /* DD C5 */ { 0, &BX_CPU_C::FFREE_STi },
556 /* DD C6 */ { 0, &BX_CPU_C::FFREE_STi },
557 /* DD C7 */ { 0, &BX_CPU_C::FFREE_STi },
558 /* DD C8 */ { 0, &BX_CPU_C::BxError },
559 /* DD C9 */ { 0, &BX_CPU_C::BxError },
560 /* DD CA */ { 0, &BX_CPU_C::BxError },
561 /* DD CB */ { 0, &BX_CPU_C::BxError },
562 /* DD CC */ { 0, &BX_CPU_C::BxError },
563 /* DD CD */ { 0, &BX_CPU_C::BxError },
564 /* DD CE */ { 0, &BX_CPU_C::BxError },
565 /* DD CF */ { 0, &BX_CPU_C::BxError },
566 /* DD D0 */ { 0, &BX_CPU_C::FST_STi },
567 /* DD D1 */ { 0, &BX_CPU_C::FST_STi },
568 /* DD D2 */ { 0, &BX_CPU_C::FST_STi },
569 /* DD D3 */ { 0, &BX_CPU_C::FST_STi },
570 /* DD D4 */ { 0, &BX_CPU_C::FST_STi },
571 /* DD D5 */ { 0, &BX_CPU_C::FST_STi },
572 /* DD D6 */ { 0, &BX_CPU_C::FST_STi },
573 /* DD D7 */ { 0, &BX_CPU_C::FST_STi },
574 /* DD D8 */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
575 /* DD D9 */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
576 /* DD DA */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
577 /* DD DB */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
578 /* DD DC */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
579 /* DD DD */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
580 /* DD DE */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
581 /* DD DF */ { 0, &BX_CPU_C::FST_STi }, // FSTP_STi
582 /* DD E0 */ { 0, &BX_CPU_C::FUCOM_STi },
583 /* DD E1 */ { 0, &BX_CPU_C::FUCOM_STi },
584 /* DD E2 */ { 0, &BX_CPU_C::FUCOM_STi },
585 /* DD E3 */ { 0, &BX_CPU_C::FUCOM_STi },
586 /* DD E4 */ { 0, &BX_CPU_C::FUCOM_STi },
587 /* DD E5 */ { 0, &BX_CPU_C::FUCOM_STi },
588 /* DD E6 */ { 0, &BX_CPU_C::FUCOM_STi },
589 /* DD E7 */ { 0, &BX_CPU_C::FUCOM_STi },
590 /* DD E8 */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
591 /* DD E9 */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
592 /* DD EA */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
593 /* DD EB */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
594 /* DD EC */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
595 /* DD ED */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
596 /* DD EE */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
597 /* DD EF */ { 0, &BX_CPU_C::FUCOM_STi }, // FUCOMP
598 /* DD F0 */ { 0, &BX_CPU_C::BxError },
599 /* DD F1 */ { 0, &BX_CPU_C::BxError },
600 /* DD F2 */ { 0, &BX_CPU_C::BxError },
601 /* DD F3 */ { 0, &BX_CPU_C::BxError },
602 /* DD F4 */ { 0, &BX_CPU_C::BxError },
603 /* DD F5 */ { 0, &BX_CPU_C::BxError },
604 /* DD F6 */ { 0, &BX_CPU_C::BxError },
605 /* DD F7 */ { 0, &BX_CPU_C::BxError },
606 /* DD F8 */ { 0, &BX_CPU_C::BxError },
607 /* DD F9 */ { 0, &BX_CPU_C::BxError },
608 /* DD FA */ { 0, &BX_CPU_C::BxError },
609 /* DD FB */ { 0, &BX_CPU_C::BxError },
610 /* DD FC */ { 0, &BX_CPU_C::BxError },
611 /* DD FD */ { 0, &BX_CPU_C::BxError },
612 /* DD FE */ { 0, &BX_CPU_C::BxError },
613 /* DD FF */ { 0, &BX_CPU_C::BxError },
615 // DE (modrm is outside 00h - BFh) (mod == 11)
616 // all instructions pop FPU stack
617 /* DE C0 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
618 /* DE C1 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
619 /* DE C2 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
620 /* DE C3 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
621 /* DE C4 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
622 /* DE C5 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
623 /* DE C6 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
624 /* DE C7 */ { 0, &BX_CPU_C::FADD_STi_ST0 },
625 /* DE C8 */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
626 /* DE C9 */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
627 /* DE CA */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
628 /* DE CB */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
629 /* DE CC */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
630 /* DE CD */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
631 /* DE CE */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
632 /* DE CF */ { 0, &BX_CPU_C::FMUL_STi_ST0 },
633 /* DE D0 */ { 0, &BX_CPU_C::BxError },
634 /* DE D1 */ { 0, &BX_CPU_C::BxError },
635 /* DE D2 */ { 0, &BX_CPU_C::BxError },
636 /* DE D3 */ { 0, &BX_CPU_C::BxError },
637 /* DE D4 */ { 0, &BX_CPU_C::BxError },
638 /* DE D5 */ { 0, &BX_CPU_C::BxError },
639 /* DE D6 */ { 0, &BX_CPU_C::BxError },
640 /* DE D7 */ { 0, &BX_CPU_C::BxError },
641 /* DE D8 */ { 0, &BX_CPU_C::BxError },
642 /* DE D9 */ { 0, &BX_CPU_C::FCOMPP },
643 /* DE DA */ { 0, &BX_CPU_C::BxError },
644 /* DE DB */ { 0, &BX_CPU_C::BxError },
645 /* DE DC */ { 0, &BX_CPU_C::BxError },
646 /* DE DD */ { 0, &BX_CPU_C::BxError },
647 /* DE DE */ { 0, &BX_CPU_C::BxError },
648 /* DE DF */ { 0, &BX_CPU_C::BxError },
649 /* DE E0 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
650 /* DE E1 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
651 /* DE E2 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
652 /* DE E3 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
653 /* DE E4 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
654 /* DE E5 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
655 /* DE E6 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
656 /* DE E7 */ { 0, &BX_CPU_C::FSUBR_STi_ST0 },
657 /* DE E8 */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
658 /* DE E9 */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
659 /* DE EA */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
660 /* DE EB */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
661 /* DE EC */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
662 /* DE ED */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
663 /* DE EE */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
664 /* DE EF */ { 0, &BX_CPU_C::FSUB_STi_ST0 },
665 /* DE F0 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
666 /* DE F1 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
667 /* DE F2 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
668 /* DE F3 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
669 /* DE F4 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
670 /* DE F5 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
671 /* DE F6 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
672 /* DE F7 */ { 0, &BX_CPU_C::FDIVR_STi_ST0 },
673 /* DE F8 */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
674 /* DE F9 */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
675 /* DE FA */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
676 /* DE FB */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
677 /* DE FC */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
678 /* DE FD */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
679 /* DE FE */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
680 /* DE FF */ { 0, &BX_CPU_C::FDIV_STi_ST0 },
682 // DF (modrm is outside 00h - BFh) (mod == 11)
683 /* DF C0 */ { 0, &BX_CPU_C::FFREEP_STi }, // 287+ compatibility opcode
684 /* DF C1 */ { 0, &BX_CPU_C::FFREEP_STi },
685 /* DF C2 */ { 0, &BX_CPU_C::FFREEP_STi },
686 /* DF C3 */ { 0, &BX_CPU_C::FFREEP_STi },
687 /* DF C4 */ { 0, &BX_CPU_C::FFREEP_STi },
688 /* DF C5 */ { 0, &BX_CPU_C::FFREEP_STi },
689 /* DF C6 */ { 0, &BX_CPU_C::FFREEP_STi },
690 /* DF C7 */ { 0, &BX_CPU_C::FFREEP_STi },
691 /* DF C8 */ { 0, &BX_CPU_C::BxError },
692 /* DF C9 */ { 0, &BX_CPU_C::BxError },
693 /* DF CA */ { 0, &BX_CPU_C::BxError },
694 /* DF CB */ { 0, &BX_CPU_C::BxError },
695 /* DF CC */ { 0, &BX_CPU_C::BxError },
696 /* DF CD */ { 0, &BX_CPU_C::BxError },
697 /* DF CE */ { 0, &BX_CPU_C::BxError },
698 /* DF CF */ { 0, &BX_CPU_C::BxError },
699 /* DF D0 */ { 0, &BX_CPU_C::BxError },
700 /* DF D1 */ { 0, &BX_CPU_C::BxError },
701 /* DF D2 */ { 0, &BX_CPU_C::BxError },
702 /* DF D3 */ { 0, &BX_CPU_C::BxError },
703 /* DF D4 */ { 0, &BX_CPU_C::BxError },
704 /* DF D5 */ { 0, &BX_CPU_C::BxError },
705 /* DF D6 */ { 0, &BX_CPU_C::BxError },
706 /* DF D7 */ { 0, &BX_CPU_C::BxError },
707 /* DF D8 */ { 0, &BX_CPU_C::BxError },
708 /* DF D9 */ { 0, &BX_CPU_C::BxError },
709 /* DF DA */ { 0, &BX_CPU_C::BxError },
710 /* DF DB */ { 0, &BX_CPU_C::BxError },
711 /* DF DC */ { 0, &BX_CPU_C::BxError },
712 /* DF DD */ { 0, &BX_CPU_C::BxError },
713 /* DF DE */ { 0, &BX_CPU_C::BxError },
714 /* DF DF */ { 0, &BX_CPU_C::BxError },
715 /* DF E0 */ { 0, &BX_CPU_C::FNSTSW_AX },
716 /* DF E1 */ { 0, &BX_CPU_C::BxError },
717 /* DF E2 */ { 0, &BX_CPU_C::BxError },
718 /* DF E3 */ { 0, &BX_CPU_C::BxError },
719 /* DF E4 */ { 0, &BX_CPU_C::BxError },
720 /* DF E5 */ { 0, &BX_CPU_C::BxError },
721 /* DF E6 */ { 0, &BX_CPU_C::BxError },
722 /* DF E7 */ { 0, &BX_CPU_C::BxError },
723 /* DF E8 */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
724 /* DF E9 */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
725 /* DF EA */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
726 /* DF EB */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
727 /* DF EC */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
728 /* DF ED */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
729 /* DF EE */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
730 /* DF EF */ { 0, &BX_CPU_C::FUCOMI_ST0_STj }, // FUCOMIP
731 /* DF F0 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
732 /* DF F1 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
733 /* DF F2 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
734 /* DF F3 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
735 /* DF F4 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
736 /* DF F5 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
737 /* DF F6 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
738 /* DF F7 */ { 0, &BX_CPU_C::FCOMI_ST0_STj }, // FCOMIP
739 /* DF F8 */ { 0, &BX_CPU_C::BxError },
740 /* DF F9 */ { 0, &BX_CPU_C::BxError },
741 /* DF FA */ { 0, &BX_CPU_C::BxError },
742 /* DF FB */ { 0, &BX_CPU_C::BxError },
743 /* DF FC */ { 0, &BX_CPU_C::BxError },
744 /* DF FD */ { 0, &BX_CPU_C::BxError },
745 /* DF FE */ { 0, &BX_CPU_C::BxError },
746 /* DF FF */ { 0, &BX_CPU_C::BxError },
749 #endif
751 /* ************************************************************************ */
752 /* 3DNow! Opcodes */
754 #if BX_SUPPORT_3DNOW
756 static const BxOpcodeInfo_t Bx3DNowOpcodeInfo[256] = {
757 // 256 entries for 3DNow opcodes, by suffix
758 /* 00 */ { 0, &BX_CPU_C::BxError },
759 /* 01 */ { 0, &BX_CPU_C::BxError },
760 /* 02 */ { 0, &BX_CPU_C::BxError },
761 /* 03 */ { 0, &BX_CPU_C::BxError },
762 /* 04 */ { 0, &BX_CPU_C::BxError },
763 /* 05 */ { 0, &BX_CPU_C::BxError },
764 /* 06 */ { 0, &BX_CPU_C::BxError },
765 /* 07 */ { 0, &BX_CPU_C::BxError },
766 /* 08 */ { 0, &BX_CPU_C::BxError },
767 /* 09 */ { 0, &BX_CPU_C::BxError },
768 /* 0A */ { 0, &BX_CPU_C::BxError },
769 /* 0B */ { 0, &BX_CPU_C::BxError },
770 /* 0C */ { 0, &BX_CPU_C::PI2FW_PqQq },
771 /* 0D */ { 0, &BX_CPU_C::PI2FD_PqQq },
772 /* 0E */ { 0, &BX_CPU_C::BxError },
773 /* 0F */ { 0, &BX_CPU_C::BxError },
774 /* 10 */ { 0, &BX_CPU_C::BxError },
775 /* 11 */ { 0, &BX_CPU_C::BxError },
776 /* 12 */ { 0, &BX_CPU_C::BxError },
777 /* 13 */ { 0, &BX_CPU_C::BxError },
778 /* 14 */ { 0, &BX_CPU_C::BxError },
779 /* 15 */ { 0, &BX_CPU_C::BxError },
780 /* 16 */ { 0, &BX_CPU_C::BxError },
781 /* 17 */ { 0, &BX_CPU_C::BxError },
782 /* 18 */ { 0, &BX_CPU_C::BxError },
783 /* 19 */ { 0, &BX_CPU_C::BxError },
784 /* 1A */ { 0, &BX_CPU_C::BxError },
785 /* 1B */ { 0, &BX_CPU_C::BxError },
786 /* 1C */ { 0, &BX_CPU_C::PF2IW_PqQq },
787 /* 1D */ { 0, &BX_CPU_C::PF2ID_PqQq },
788 /* 1E */ { 0, &BX_CPU_C::BxError },
789 /* 1F */ { 0, &BX_CPU_C::BxError },
790 /* 20 */ { 0, &BX_CPU_C::BxError },
791 /* 21 */ { 0, &BX_CPU_C::BxError },
792 /* 22 */ { 0, &BX_CPU_C::BxError },
793 /* 23 */ { 0, &BX_CPU_C::BxError },
794 /* 24 */ { 0, &BX_CPU_C::BxError },
795 /* 25 */ { 0, &BX_CPU_C::BxError },
796 /* 26 */ { 0, &BX_CPU_C::BxError },
797 /* 27 */ { 0, &BX_CPU_C::BxError },
798 /* 28 */ { 0, &BX_CPU_C::BxError },
799 /* 29 */ { 0, &BX_CPU_C::BxError },
800 /* 2A */ { 0, &BX_CPU_C::BxError },
801 /* 2B */ { 0, &BX_CPU_C::BxError },
802 /* 2C */ { 0, &BX_CPU_C::BxError },
803 /* 2D */ { 0, &BX_CPU_C::BxError },
804 /* 2E */ { 0, &BX_CPU_C::BxError },
805 /* 2F */ { 0, &BX_CPU_C::BxError },
806 /* 30 */ { 0, &BX_CPU_C::BxError },
807 /* 31 */ { 0, &BX_CPU_C::BxError },
808 /* 32 */ { 0, &BX_CPU_C::BxError },
809 /* 33 */ { 0, &BX_CPU_C::BxError },
810 /* 34 */ { 0, &BX_CPU_C::BxError },
811 /* 35 */ { 0, &BX_CPU_C::BxError },
812 /* 36 */ { 0, &BX_CPU_C::BxError },
813 /* 37 */ { 0, &BX_CPU_C::BxError },
814 /* 38 */ { 0, &BX_CPU_C::BxError },
815 /* 39 */ { 0, &BX_CPU_C::BxError },
816 /* 3A */ { 0, &BX_CPU_C::BxError },
817 /* 3B */ { 0, &BX_CPU_C::BxError },
818 /* 3C */ { 0, &BX_CPU_C::BxError },
819 /* 3D */ { 0, &BX_CPU_C::BxError },
820 /* 3E */ { 0, &BX_CPU_C::BxError },
821 /* 3F */ { 0, &BX_CPU_C::BxError },
822 /* 40 */ { 0, &BX_CPU_C::BxError },
823 /* 41 */ { 0, &BX_CPU_C::BxError },
824 /* 42 */ { 0, &BX_CPU_C::BxError },
825 /* 43 */ { 0, &BX_CPU_C::BxError },
826 /* 44 */ { 0, &BX_CPU_C::BxError },
827 /* 45 */ { 0, &BX_CPU_C::BxError },
828 /* 46 */ { 0, &BX_CPU_C::BxError },
829 /* 47 */ { 0, &BX_CPU_C::BxError },
830 /* 48 */ { 0, &BX_CPU_C::BxError },
831 /* 49 */ { 0, &BX_CPU_C::BxError },
832 /* 4A */ { 0, &BX_CPU_C::BxError },
833 /* 4B */ { 0, &BX_CPU_C::BxError },
834 /* 4C */ { 0, &BX_CPU_C::BxError },
835 /* 4D */ { 0, &BX_CPU_C::BxError },
836 /* 4E */ { 0, &BX_CPU_C::BxError },
837 /* 4F */ { 0, &BX_CPU_C::BxError },
838 /* 50 */ { 0, &BX_CPU_C::BxError },
839 /* 51 */ { 0, &BX_CPU_C::BxError },
840 /* 52 */ { 0, &BX_CPU_C::BxError },
841 /* 53 */ { 0, &BX_CPU_C::BxError },
842 /* 54 */ { 0, &BX_CPU_C::BxError },
843 /* 55 */ { 0, &BX_CPU_C::BxError },
844 /* 56 */ { 0, &BX_CPU_C::BxError },
845 /* 57 */ { 0, &BX_CPU_C::BxError },
846 /* 58 */ { 0, &BX_CPU_C::BxError },
847 /* 59 */ { 0, &BX_CPU_C::BxError },
848 /* 5A */ { 0, &BX_CPU_C::BxError },
849 /* 5B */ { 0, &BX_CPU_C::BxError },
850 /* 5C */ { 0, &BX_CPU_C::BxError },
851 /* 5D */ { 0, &BX_CPU_C::BxError },
852 /* 5E */ { 0, &BX_CPU_C::BxError },
853 /* 5F */ { 0, &BX_CPU_C::BxError },
854 /* 60 */ { 0, &BX_CPU_C::BxError },
855 /* 61 */ { 0, &BX_CPU_C::BxError },
856 /* 62 */ { 0, &BX_CPU_C::BxError },
857 /* 63 */ { 0, &BX_CPU_C::BxError },
858 /* 64 */ { 0, &BX_CPU_C::BxError },
859 /* 65 */ { 0, &BX_CPU_C::BxError },
860 /* 66 */ { 0, &BX_CPU_C::BxError },
861 /* 67 */ { 0, &BX_CPU_C::BxError },
862 /* 68 */ { 0, &BX_CPU_C::BxError },
863 /* 69 */ { 0, &BX_CPU_C::BxError },
864 /* 6A */ { 0, &BX_CPU_C::BxError },
865 /* 6B */ { 0, &BX_CPU_C::BxError },
866 /* 6C */ { 0, &BX_CPU_C::BxError },
867 /* 6D */ { 0, &BX_CPU_C::BxError },
868 /* 6E */ { 0, &BX_CPU_C::BxError },
869 /* 6F */ { 0, &BX_CPU_C::BxError },
870 /* 70 */ { 0, &BX_CPU_C::BxError },
871 /* 71 */ { 0, &BX_CPU_C::BxError },
872 /* 72 */ { 0, &BX_CPU_C::BxError },
873 /* 73 */ { 0, &BX_CPU_C::BxError },
874 /* 74 */ { 0, &BX_CPU_C::BxError },
875 /* 75 */ { 0, &BX_CPU_C::BxError },
876 /* 76 */ { 0, &BX_CPU_C::BxError },
877 /* 77 */ { 0, &BX_CPU_C::BxError },
878 /* 78 */ { 0, &BX_CPU_C::BxError },
879 /* 79 */ { 0, &BX_CPU_C::BxError },
880 /* 7A */ { 0, &BX_CPU_C::BxError },
881 /* 7B */ { 0, &BX_CPU_C::BxError },
882 /* 7C */ { 0, &BX_CPU_C::BxError },
883 /* 7D */ { 0, &BX_CPU_C::BxError },
884 /* 7E */ { 0, &BX_CPU_C::BxError },
885 /* 7F */ { 0, &BX_CPU_C::BxError },
886 /* 80 */ { 0, &BX_CPU_C::BxError },
887 /* 81 */ { 0, &BX_CPU_C::BxError },
888 /* 82 */ { 0, &BX_CPU_C::BxError },
889 /* 83 */ { 0, &BX_CPU_C::BxError },
890 /* 84 */ { 0, &BX_CPU_C::BxError },
891 /* 85 */ { 0, &BX_CPU_C::BxError },
892 /* 86 */ { 0, &BX_CPU_C::BxError },
893 /* 87 */ { 0, &BX_CPU_C::BxError },
894 /* 88 */ { 0, &BX_CPU_C::BxError },
895 /* 89 */ { 0, &BX_CPU_C::BxError },
896 /* 8A */ { 0, &BX_CPU_C::PFNACC_PqQq },
897 /* 8B */ { 0, &BX_CPU_C::BxError },
898 /* 8C */ { 0, &BX_CPU_C::BxError },
899 /* 8D */ { 0, &BX_CPU_C::BxError },
900 /* 8E */ { 0, &BX_CPU_C::PFPNACC_PqQq },
901 /* 8F */ { 0, &BX_CPU_C::BxError },
902 /* 90 */ { 0, &BX_CPU_C::PFCMPGE_PqQq },
903 /* 91 */ { 0, &BX_CPU_C::BxError },
904 /* 92 */ { 0, &BX_CPU_C::BxError },
905 /* 93 */ { 0, &BX_CPU_C::BxError },
906 /* 94 */ { 0, &BX_CPU_C::PFMIN_PqQq },
907 /* 95 */ { 0, &BX_CPU_C::BxError },
908 /* 96 */ { 0, &BX_CPU_C::PFRCP_PqQq },
909 /* 97 */ { 0, &BX_CPU_C::PFRSQRT_PqQq },
910 /* 98 */ { 0, &BX_CPU_C::BxError },
911 /* 99 */ { 0, &BX_CPU_C::BxError },
912 /* 9A */ { 0, &BX_CPU_C::PFSUB_PqQq },
913 /* 9B */ { 0, &BX_CPU_C::BxError },
914 /* 9C */ { 0, &BX_CPU_C::BxError },
915 /* 9D */ { 0, &BX_CPU_C::BxError },
916 /* 9E */ { 0, &BX_CPU_C::PFADD_PqQq },
917 /* 9F */ { 0, &BX_CPU_C::BxError },
918 /* A0 */ { 0, &BX_CPU_C::PFCMPGT_PqQq },
919 /* A1 */ { 0, &BX_CPU_C::BxError },
920 /* A2 */ { 0, &BX_CPU_C::BxError },
921 /* A3 */ { 0, &BX_CPU_C::BxError },
922 /* A4 */ { 0, &BX_CPU_C::PFMAX_PqQq },
923 /* A5 */ { 0, &BX_CPU_C::BxError },
924 /* A6 */ { 0, &BX_CPU_C::PFRCPIT1_PqQq },
925 /* A7 */ { 0, &BX_CPU_C::PFRSQIT1_PqQq },
926 /* A8 */ { 0, &BX_CPU_C::BxError },
927 /* A9 */ { 0, &BX_CPU_C::BxError },
928 /* AA */ { 0, &BX_CPU_C::PFSUBR_PqQq },
929 /* AB */ { 0, &BX_CPU_C::BxError },
930 /* AC */ { 0, &BX_CPU_C::BxError },
931 /* AD */ { 0, &BX_CPU_C::BxError },
932 /* AE */ { 0, &BX_CPU_C::PFACC_PqQq },
933 /* AF */ { 0, &BX_CPU_C::BxError },
934 /* B0 */ { 0, &BX_CPU_C::PFCMPEQ_PqQq },
935 /* B1 */ { 0, &BX_CPU_C::BxError },
936 /* B2 */ { 0, &BX_CPU_C::BxError },
937 /* B3 */ { 0, &BX_CPU_C::BxError },
938 /* B4 */ { 0, &BX_CPU_C::PFMUL_PqQq },
939 /* B5 */ { 0, &BX_CPU_C::BxError },
940 /* B6 */ { 0, &BX_CPU_C::PFRCPIT2_PqQq },
941 /* B7 */ { 0, &BX_CPU_C::PMULHRW_PqQq },
942 /* B8 */ { 0, &BX_CPU_C::BxError },
943 /* B9 */ { 0, &BX_CPU_C::BxError },
944 /* BA */ { 0, &BX_CPU_C::BxError },
945 /* BB */ { 0, &BX_CPU_C::PSWAPD_PqQq },
946 /* BC */ { 0, &BX_CPU_C::BxError },
947 /* BD */ { 0, &BX_CPU_C::BxError },
948 /* BE */ { 0, &BX_CPU_C::BxError },
949 /* BF */ { 0, &BX_CPU_C::PAVGB_PqQq },
950 /* C0 */ { 0, &BX_CPU_C::BxError },
951 /* C1 */ { 0, &BX_CPU_C::BxError },
952 /* C2 */ { 0, &BX_CPU_C::BxError },
953 /* C3 */ { 0, &BX_CPU_C::BxError },
954 /* C4 */ { 0, &BX_CPU_C::BxError },
955 /* C5 */ { 0, &BX_CPU_C::BxError },
956 /* C6 */ { 0, &BX_CPU_C::BxError },
957 /* C7 */ { 0, &BX_CPU_C::BxError },
958 /* C8 */ { 0, &BX_CPU_C::BxError },
959 /* C9 */ { 0, &BX_CPU_C::BxError },
960 /* CA */ { 0, &BX_CPU_C::BxError },
961 /* CB */ { 0, &BX_CPU_C::BxError },
962 /* CC */ { 0, &BX_CPU_C::BxError },
963 /* CD */ { 0, &BX_CPU_C::BxError },
964 /* CE */ { 0, &BX_CPU_C::BxError },
965 /* CF */ { 0, &BX_CPU_C::BxError },
966 /* D0 */ { 0, &BX_CPU_C::BxError },
967 /* D1 */ { 0, &BX_CPU_C::BxError },
968 /* D2 */ { 0, &BX_CPU_C::BxError },
969 /* D3 */ { 0, &BX_CPU_C::BxError },
970 /* D4 */ { 0, &BX_CPU_C::BxError },
971 /* D5 */ { 0, &BX_CPU_C::BxError },
972 /* D6 */ { 0, &BX_CPU_C::BxError },
973 /* D7 */ { 0, &BX_CPU_C::BxError },
974 /* D8 */ { 0, &BX_CPU_C::BxError },
975 /* D9 */ { 0, &BX_CPU_C::BxError },
976 /* DA */ { 0, &BX_CPU_C::BxError },
977 /* DB */ { 0, &BX_CPU_C::BxError },
978 /* DC */ { 0, &BX_CPU_C::BxError },
979 /* DD */ { 0, &BX_CPU_C::BxError },
980 /* DE */ { 0, &BX_CPU_C::BxError },
981 /* DF */ { 0, &BX_CPU_C::BxError },
982 /* E0 */ { 0, &BX_CPU_C::BxError },
983 /* E1 */ { 0, &BX_CPU_C::BxError },
984 /* E2 */ { 0, &BX_CPU_C::BxError },
985 /* E3 */ { 0, &BX_CPU_C::BxError },
986 /* E4 */ { 0, &BX_CPU_C::BxError },
987 /* E5 */ { 0, &BX_CPU_C::BxError },
988 /* E6 */ { 0, &BX_CPU_C::BxError },
989 /* E7 */ { 0, &BX_CPU_C::BxError },
990 /* E8 */ { 0, &BX_CPU_C::BxError },
991 /* E9 */ { 0, &BX_CPU_C::BxError },
992 /* EA */ { 0, &BX_CPU_C::BxError },
993 /* EB */ { 0, &BX_CPU_C::BxError },
994 /* EC */ { 0, &BX_CPU_C::BxError },
995 /* ED */ { 0, &BX_CPU_C::BxError },
996 /* EE */ { 0, &BX_CPU_C::BxError },
997 /* EF */ { 0, &BX_CPU_C::BxError },
998 /* F0 */ { 0, &BX_CPU_C::BxError },
999 /* F1 */ { 0, &BX_CPU_C::BxError },
1000 /* F2 */ { 0, &BX_CPU_C::BxError },
1001 /* F3 */ { 0, &BX_CPU_C::BxError },
1002 /* F4 */ { 0, &BX_CPU_C::BxError },
1003 /* F5 */ { 0, &BX_CPU_C::BxError },
1004 /* F6 */ { 0, &BX_CPU_C::BxError },
1005 /* F7 */ { 0, &BX_CPU_C::BxError },
1006 /* F8 */ { 0, &BX_CPU_C::BxError },
1007 /* F9 */ { 0, &BX_CPU_C::BxError },
1008 /* FA */ { 0, &BX_CPU_C::BxError },
1009 /* FB */ { 0, &BX_CPU_C::BxError },
1010 /* FC */ { 0, &BX_CPU_C::BxError },
1011 /* FD */ { 0, &BX_CPU_C::BxError },
1012 /* FE */ { 0, &BX_CPU_C::BxError },
1013 /* FF */ { 0, &BX_CPU_C::BxError }
1016 #endif
1019 /* ********** */
1020 /* SSE Groups */
1021 /* ********** */
1023 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f10[4] = {
1024 /* -- */ { 0, &BX_CPU_C::MOVUPS_VpsWps },
1025 /* 66 */ { 0, &BX_CPU_C::MOVUPD_VpdWpd },
1026 /* F2 */ { 0, &BX_CPU_C::MOVSD_VsdWsd },
1027 /* F3 */ { 0, &BX_CPU_C::MOVSS_VssWss }
1030 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f11[4] = {
1031 /* -- */ { 0, &BX_CPU_C::MOVUPS_WpsVps },
1032 /* 66 */ { 0, &BX_CPU_C::MOVUPD_WpdVpd },
1033 /* F2 */ { 0, &BX_CPU_C::MOVSD_WsdVsd },
1034 /* F3 */ { 0, &BX_CPU_C::MOVSS_WssVss }
1037 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f12[4] = {
1038 /* -- */ { 0, &BX_CPU_C::MOVLPS_VpsMq },
1039 /* 66 */ { 0, &BX_CPU_C::MOVLPD_VsdMq },
1040 /* F2 */ { 0, &BX_CPU_C::MOVDDUP_VpdWq }, // SSE3
1041 /* F3 */ { 0, &BX_CPU_C::MOVSLDUP_VpsWps } // SSE3
1044 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f13[4] = {
1045 /* -- */ { 0, &BX_CPU_C::MOVLPS_MqVps },
1046 /* 66 */ { 0, &BX_CPU_C::MOVLPD_MqVsd },
1047 /* F2 */ { 0, &BX_CPU_C::BxError },
1048 /* F3 */ { 0, &BX_CPU_C::BxError }
1051 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f14[4] = {
1052 /* -- */ { 0, &BX_CPU_C::UNPCKLPS_VpsWq },
1053 /* 66 */ { 0, &BX_CPU_C::UNPCKLPD_VpdWq },
1054 /* F2 */ { 0, &BX_CPU_C::BxError },
1055 /* F3 */ { 0, &BX_CPU_C::BxError }
1058 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f15[4] = {
1059 /* -- */ { 0, &BX_CPU_C::UNPCKHPS_VpsWq },
1060 /* 66 */ { 0, &BX_CPU_C::UNPCKHPD_VpdWq },
1061 /* F2 */ { 0, &BX_CPU_C::BxError },
1062 /* F3 */ { 0, &BX_CPU_C::BxError }
1065 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f16[4] = {
1066 /* -- */ { 0, &BX_CPU_C::MOVHPS_VpsMq },
1067 /* 66 */ { 0, &BX_CPU_C::MOVHPD_VsdMq },
1068 /* F2 */ { 0, &BX_CPU_C::BxError },
1069 /* F3 */ { 0, &BX_CPU_C::MOVSHDUP_VpsWps } // SSE3
1072 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f17[4] = {
1073 /* -- */ { 0, &BX_CPU_C::MOVHPS_MqVps },
1074 /* 66 */ { 0, &BX_CPU_C::MOVHPD_MqVsd },
1075 /* F2 */ { 0, &BX_CPU_C::BxError },
1076 /* F3 */ { 0, &BX_CPU_C::BxError }
1079 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f28[4] = {
1080 /* -- */ { 0, &BX_CPU_C::MOVAPS_VpsWps },
1081 /* 66 */ { 0, &BX_CPU_C::MOVAPD_VpdWpd },
1082 /* F2 */ { 0, &BX_CPU_C::BxError },
1083 /* F3 */ { 0, &BX_CPU_C::BxError }
1086 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f29[4] = {
1087 /* -- */ { 0, &BX_CPU_C::MOVAPS_WpsVps },
1088 /* 66 */ { 0, &BX_CPU_C::MOVAPD_WpdVpd },
1089 /* F2 */ { 0, &BX_CPU_C::BxError },
1090 /* F3 */ { 0, &BX_CPU_C::BxError }
1093 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2a[4] = {
1094 /* -- */ { 0, &BX_CPU_C::CVTPI2PS_VpsQq },
1095 /* 66 */ { 0, &BX_CPU_C::CVTPI2PD_VpdQq },
1096 /* F2 */ { 0, &BX_CPU_C::CVTSI2SD_VsdEd },
1097 /* F3 */ { 0, &BX_CPU_C::CVTSI2SS_VssEd }
1100 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2b[4] = {
1101 /* -- */ { 0, &BX_CPU_C::MOVNTPS_MpsVps },
1102 /* 66 */ { 0, &BX_CPU_C::MOVNTPD_MpdVpd },
1103 /* F2 */ { 0, &BX_CPU_C::BxError },
1104 /* F3 */ { 0, &BX_CPU_C::BxError }
1107 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2c[4] = {
1108 /* -- */ { 0, &BX_CPU_C::CVTTPS2PI_PqWps },
1109 /* 66 */ { 0, &BX_CPU_C::CVTTPD2PI_PqWpd },
1110 /* F2 */ { 0, &BX_CPU_C::CVTTSD2SI_GdWsd },
1111 /* F3 */ { 0, &BX_CPU_C::CVTTSS2SI_GdWss }
1114 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2d[4] = {
1115 /* -- */ { 0, &BX_CPU_C::CVTPS2PI_PqWps },
1116 /* 66 */ { 0, &BX_CPU_C::CVTPD2PI_PqWpd },
1117 /* F2 */ { 0, &BX_CPU_C::CVTSD2SI_GdWsd },
1118 /* F3 */ { 0, &BX_CPU_C::CVTSS2SI_GdWss }
1121 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2e[4] = {
1122 /* -- */ { 0, &BX_CPU_C::UCOMISS_VssWss },
1123 /* 66 */ { 0, &BX_CPU_C::UCOMISD_VsdWsd },
1124 /* F2 */ { 0, &BX_CPU_C::BxError },
1125 /* F3 */ { 0, &BX_CPU_C::BxError }
1128 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f2f[4] = {
1129 /* -- */ { 0, &BX_CPU_C::COMISS_VpsWps },
1130 /* 66 */ { 0, &BX_CPU_C::COMISD_VpdWpd },
1131 /* F2 */ { 0, &BX_CPU_C::BxError },
1132 /* F3 */ { 0, &BX_CPU_C::BxError }
1135 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f50[4] = {
1136 /* -- */ { 0, &BX_CPU_C::MOVMSKPS_GdVRps },
1137 /* 66 */ { 0, &BX_CPU_C::MOVMSKPD_GdVRpd },
1138 /* F2 */ { 0, &BX_CPU_C::BxError },
1139 /* F3 */ { 0, &BX_CPU_C::BxError }
1142 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f51[4] = {
1143 /* -- */ { 0, &BX_CPU_C::SQRTPS_VpsWps },
1144 /* 66 */ { 0, &BX_CPU_C::SQRTPD_VpdWpd },
1145 /* F2 */ { 0, &BX_CPU_C::SQRTSD_VsdWsd },
1146 /* F3 */ { 0, &BX_CPU_C::SQRTSS_VssWss }
1149 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f52[4] = {
1150 /* -- */ { 0, &BX_CPU_C::RSQRTPS_VpsWps },
1151 /* 66 */ { 0, &BX_CPU_C::BxError },
1152 /* F2 */ { 0, &BX_CPU_C::BxError },
1153 /* F3 */ { 0, &BX_CPU_C::RSQRTSS_VssWss }
1156 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f53[4] = {
1157 /* -- */ { 0, &BX_CPU_C::RCPPS_VpsWps },
1158 /* 66 */ { 0, &BX_CPU_C::BxError },
1159 /* F2 */ { 0, &BX_CPU_C::BxError },
1160 /* F3 */ { 0, &BX_CPU_C::RCPSS_VssWss }
1163 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f54[4] = {
1164 /* -- */ { 0, &BX_CPU_C::ANDPS_VpsWps },
1165 /* 66 */ { 0, &BX_CPU_C::ANDPD_VpdWpd },
1166 /* F2 */ { 0, &BX_CPU_C::BxError },
1167 /* F3 */ { 0, &BX_CPU_C::BxError }
1170 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f55[4] = {
1171 /* -- */ { 0, &BX_CPU_C::ANDNPS_VpsWps },
1172 /* 66 */ { 0, &BX_CPU_C::ANDNPD_VpdWpd },
1173 /* F2 */ { 0, &BX_CPU_C::BxError },
1174 /* F3 */ { 0, &BX_CPU_C::BxError }
1177 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f56[4] = {
1178 /* -- */ { 0, &BX_CPU_C::ORPS_VpsWps },
1179 /* 66 */ { 0, &BX_CPU_C::ORPD_VpdWpd },
1180 /* F2 */ { 0, &BX_CPU_C::BxError },
1181 /* F3 */ { 0, &BX_CPU_C::BxError }
1184 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f57[4] = {
1185 /* -- */ { 0, &BX_CPU_C::XORPS_VpsWps },
1186 /* 66 */ { 0, &BX_CPU_C::XORPD_VpdWpd },
1187 /* F2 */ { 0, &BX_CPU_C::BxError },
1188 /* F3 */ { 0, &BX_CPU_C::BxError }
1191 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f58[4] = {
1192 /* -- */ { 0, &BX_CPU_C::ADDPS_VpsWps },
1193 /* 66 */ { 0, &BX_CPU_C::ADDPD_VpdWpd },
1194 /* F2 */ { 0, &BX_CPU_C::ADDSD_VsdWsd },
1195 /* F3 */ { 0, &BX_CPU_C::ADDSS_VssWss }
1198 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f59[4] = {
1199 /* -- */ { 0, &BX_CPU_C::MULPS_VpsWps },
1200 /* 66 */ { 0, &BX_CPU_C::MULPD_VpdWpd },
1201 /* F2 */ { 0, &BX_CPU_C::MULSD_VsdWsd },
1202 /* F3 */ { 0, &BX_CPU_C::MULSS_VssWss }
1205 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5a[4] = {
1206 /* -- */ { 0, &BX_CPU_C::CVTPS2PD_VpsWps },
1207 /* 66 */ { 0, &BX_CPU_C::CVTPD2PS_VpdWpd },
1208 /* F2 */ { 0, &BX_CPU_C::CVTSD2SS_VsdWsd },
1209 /* F3 */ { 0, &BX_CPU_C::CVTSS2SD_VssWss }
1212 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5b[4] = {
1213 /* -- */ { 0, &BX_CPU_C::CVTDQ2PS_VpsWdq },
1214 /* 66 */ { 0, &BX_CPU_C::CVTPS2DQ_VdqWps },
1215 /* F2 */ { 0, &BX_CPU_C::BxError },
1216 /* F3 */ { 0, &BX_CPU_C::CVTTPS2DQ_VdqWps }
1219 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5c[4] = {
1220 /* -- */ { 0, &BX_CPU_C::SUBPS_VpsWps },
1221 /* 66 */ { 0, &BX_CPU_C::SUBPD_VpdWpd },
1222 /* F2 */ { 0, &BX_CPU_C::SUBSD_VsdWsd },
1223 /* F3 */ { 0, &BX_CPU_C::SUBSS_VssWss }
1226 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5d[4] = {
1227 /* -- */ { 0, &BX_CPU_C::MINPS_VpsWps },
1228 /* 66 */ { 0, &BX_CPU_C::MINPD_VpdWpd },
1229 /* F2 */ { 0, &BX_CPU_C::MINSD_VsdWsd },
1230 /* F3 */ { 0, &BX_CPU_C::MINSS_VssWss }
1233 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5e[4] = {
1234 /* -- */ { 0, &BX_CPU_C::DIVPS_VpsWps },
1235 /* 66 */ { 0, &BX_CPU_C::DIVPD_VpdWpd },
1236 /* F2 */ { 0, &BX_CPU_C::DIVSD_VsdWsd },
1237 /* F3 */ { 0, &BX_CPU_C::DIVSS_VssWss }
1240 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f5f[4] = {
1241 /* -- */ { 0, &BX_CPU_C::MAXPS_VpsWps },
1242 /* 66 */ { 0, &BX_CPU_C::MAXPD_VpdWpd },
1243 /* F2 */ { 0, &BX_CPU_C::MAXSD_VsdWsd },
1244 /* F3 */ { 0, &BX_CPU_C::MAXSS_VssWss }
1247 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f60[4] = {
1248 /* -- */ { 0, &BX_CPU_C::PUNPCKLBW_PqQd },
1249 /* 66 */ { 0, &BX_CPU_C::PUNPCKLBW_VdqWq },
1250 /* F2 */ { 0, &BX_CPU_C::BxError },
1251 /* F3 */ { 0, &BX_CPU_C::BxError }
1254 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f61[4] = {
1255 /* -- */ { 0, &BX_CPU_C::PUNPCKLWD_PqQd },
1256 /* 66 */ { 0, &BX_CPU_C::PUNPCKLWD_VdqWq },
1257 /* F2 */ { 0, &BX_CPU_C::BxError },
1258 /* F3 */ { 0, &BX_CPU_C::BxError }
1261 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f62[4] = {
1262 /* -- */ { 0, &BX_CPU_C::PUNPCKLDQ_PqQd },
1263 /* 66 */ { 0, &BX_CPU_C::PUNPCKLDQ_VdqWq },
1264 /* F2 */ { 0, &BX_CPU_C::BxError },
1265 /* F3 */ { 0, &BX_CPU_C::BxError }
1268 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f63[4] = {
1269 /* -- */ { 0, &BX_CPU_C::PACKSSWB_PqQq },
1270 /* 66 */ { 0, &BX_CPU_C::PACKSSWB_VdqWq },
1271 /* F2 */ { 0, &BX_CPU_C::BxError },
1272 /* F3 */ { 0, &BX_CPU_C::BxError }
1275 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f64[4] = {
1276 /* -- */ { 0, &BX_CPU_C::PCMPGTB_PqQq },
1277 /* 66 */ { 0, &BX_CPU_C::PCMPGTB_VdqWq },
1278 /* F2 */ { 0, &BX_CPU_C::BxError },
1279 /* F3 */ { 0, &BX_CPU_C::BxError }
1282 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f65[4] = {
1283 /* -- */ { 0, &BX_CPU_C::PCMPGTW_PqQq },
1284 /* 66 */ { 0, &BX_CPU_C::PCMPGTW_VdqWq },
1285 /* F2 */ { 0, &BX_CPU_C::BxError },
1286 /* F3 */ { 0, &BX_CPU_C::BxError }
1289 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f66[4] = {
1290 /* -- */ { 0, &BX_CPU_C::PCMPGTD_PqQq },
1291 /* 66 */ { 0, &BX_CPU_C::PCMPGTD_VdqWdq },
1292 /* F2 */ { 0, &BX_CPU_C::BxError },
1293 /* F3 */ { 0, &BX_CPU_C::BxError }
1296 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f67[4] = {
1297 /* -- */ { 0, &BX_CPU_C::PACKUSWB_PqQq },
1298 /* 66 */ { 0, &BX_CPU_C::PACKUSWB_VdqWdq },
1299 /* F2 */ { 0, &BX_CPU_C::BxError },
1300 /* F3 */ { 0, &BX_CPU_C::BxError }
1303 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f68[4] = {
1304 /* -- */ { 0, &BX_CPU_C::PUNPCKHBW_PqQq },
1305 /* 66 */ { 0, &BX_CPU_C::PUNPCKHBW_VdqWq },
1306 /* F2 */ { 0, &BX_CPU_C::BxError },
1307 /* F3 */ { 0, &BX_CPU_C::BxError }
1310 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f69[4] = {
1311 /* -- */ { 0, &BX_CPU_C::PUNPCKHWD_PqQq },
1312 /* 66 */ { 0, &BX_CPU_C::PUNPCKHWD_VdqWq },
1313 /* F2 */ { 0, &BX_CPU_C::BxError },
1314 /* F3 */ { 0, &BX_CPU_C::BxError }
1317 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6a[4] = {
1318 /* -- */ { 0, &BX_CPU_C::PUNPCKHDQ_PqQq },
1319 /* 66 */ { 0, &BX_CPU_C::PUNPCKHDQ_VdqWq },
1320 /* F2 */ { 0, &BX_CPU_C::BxError },
1321 /* F3 */ { 0, &BX_CPU_C::BxError }
1324 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6b[4] = {
1325 /* -- */ { 0, &BX_CPU_C::PACKSSDW_PqQq },
1326 /* 66 */ { 0, &BX_CPU_C::PACKSSDW_VdqWdq },
1327 /* F2 */ { 0, &BX_CPU_C::BxError },
1328 /* F3 */ { 0, &BX_CPU_C::BxError }
1331 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6c[4] = {
1332 /* -- */ { 0, &BX_CPU_C::BxError },
1333 /* 66 */ { 0, &BX_CPU_C::PUNPCKLQDQ_VdqWq },
1334 /* F2 */ { 0, &BX_CPU_C::BxError },
1335 /* F3 */ { 0, &BX_CPU_C::BxError }
1338 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6d[4] = {
1339 /* -- */ { 0, &BX_CPU_C::BxError },
1340 /* 66 */ { 0, &BX_CPU_C::PUNPCKHQDQ_VdqWq },
1341 /* F2 */ { 0, &BX_CPU_C::BxError },
1342 /* F3 */ { 0, &BX_CPU_C::BxError }
1345 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6e[4] = {
1346 /* -- */ { 0, &BX_CPU_C::MOVD_PqEd },
1347 /* 66 */ { 0, &BX_CPU_C::MOVD_VdqEd },
1348 /* F2 */ { 0, &BX_CPU_C::BxError },
1349 /* F3 */ { 0, &BX_CPU_C::BxError }
1352 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f6f[4] = {
1353 /* -- */ { 0, &BX_CPU_C::MOVQ_PqQq },
1354 /* 66 */ { 0, &BX_CPU_C::MOVDQA_VdqWdq },
1355 /* F2 */ { 0, &BX_CPU_C::BxError },
1356 /* F3 */ { 0, &BX_CPU_C::MOVDQU_VdqWdq }
1359 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f70[4] = {
1360 /* -- */ { 0, &BX_CPU_C::PSHUFW_PqQqIb },
1361 /* 66 */ { 0, &BX_CPU_C::PSHUFD_VdqWdqIb },
1362 /* F2 */ { 0, &BX_CPU_C::PSHUFHW_VqWqIb },
1363 /* F3 */ { 0, &BX_CPU_C::PSHUFLW_VqWqIb }
1366 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f74[4] = {
1367 /* -- */ { 0, &BX_CPU_C::PCMPEQB_PqQq },
1368 /* 66 */ { 0, &BX_CPU_C::PCMPEQB_VdqWdq },
1369 /* F2 */ { 0, &BX_CPU_C::BxError },
1370 /* F3 */ { 0, &BX_CPU_C::BxError }
1373 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f75[4] = {
1374 /* -- */ { 0, &BX_CPU_C::PCMPEQW_PqQq },
1375 /* 66 */ { 0, &BX_CPU_C::PCMPEQW_VdqWdq },
1376 /* F2 */ { 0, &BX_CPU_C::BxError },
1377 /* F3 */ { 0, &BX_CPU_C::BxError }
1380 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f76[4] = {
1381 /* -- */ { 0, &BX_CPU_C::PCMPEQD_PqQq },
1382 /* 66 */ { 0, &BX_CPU_C::PCMPEQD_VdqWdq },
1383 /* F2 */ { 0, &BX_CPU_C::BxError },
1384 /* F3 */ { 0, &BX_CPU_C::BxError }
1387 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f7c[4] = {
1388 /* -- */ { 0, &BX_CPU_C::BxError },
1389 /* 66 */ { 0, &BX_CPU_C::HADDPD_VpdWpd }, // SSE3
1390 /* F2 */ { 0, &BX_CPU_C::HADDPS_VpsWps }, // SSE3
1391 /* F3 */ { 0, &BX_CPU_C::BxError }
1394 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f7d[4] = {
1395 /* -- */ { 0, &BX_CPU_C::BxError },
1396 /* 66 */ { 0, &BX_CPU_C::HSUBPD_VpdWpd }, // SSE3
1397 /* F2 */ { 0, &BX_CPU_C::HSUBPS_VpsWps }, // SSE3
1398 /* F3 */ { 0, &BX_CPU_C::BxError }
1401 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f7e[4] = {
1402 /* -- */ { 0, &BX_CPU_C::MOVD_EdPd },
1403 /* 66 */ { 0, &BX_CPU_C::MOVD_EdVd },
1404 /* F2 */ { 0, &BX_CPU_C::BxError },
1405 /* F3 */ { 0, &BX_CPU_C::MOVQ_VqWq }
1408 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f7f[4] = {
1409 /* -- */ { 0, &BX_CPU_C::MOVQ_QqPq },
1410 /* 66 */ { 0, &BX_CPU_C::MOVDQA_WdqVdq },
1411 /* F2 */ { 0, &BX_CPU_C::BxError },
1412 /* F3 */ { 0, &BX_CPU_C::MOVDQU_WdqVdq }
1415 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fc2[4] = {
1416 /* -- */ { 0, &BX_CPU_C::CMPPS_VpsWpsIb },
1417 /* 66 */ { 0, &BX_CPU_C::CMPPD_VpdWpdIb },
1418 /* F2 */ { 0, &BX_CPU_C::CMPSD_VsdWsdIb },
1419 /* F3 */ { 0, &BX_CPU_C::CMPSS_VssWssIb }
1422 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fc3[4] = {
1423 /* -- */ { 0, &BX_CPU_C::MOVNTI_MdGd },
1424 /* 66 */ { 0, &BX_CPU_C::BxError },
1425 /* F2 */ { 0, &BX_CPU_C::BxError },
1426 /* F3 */ { 0, &BX_CPU_C::BxError }
1429 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fc4[4] = {
1430 /* -- */ { BxImmediate_Ib, &BX_CPU_C::PINSRW_PqEwIb },
1431 /* 66 */ { BxImmediate_Ib, &BX_CPU_C::PINSRW_VdqEwIb },
1432 /* F2 */ { 0, &BX_CPU_C::BxError },
1433 /* F3 */ { 0, &BX_CPU_C::BxError }
1436 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fc5[4] = {
1437 /* -- */ { BxImmediate_Ib, &BX_CPU_C::PEXTRW_GdPqIb },
1438 /* 66 */ { BxImmediate_Ib, &BX_CPU_C::PEXTRW_GdUdqIb },
1439 /* F2 */ { 0, &BX_CPU_C::BxError },
1440 /* F3 */ { 0, &BX_CPU_C::BxError }
1443 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fc6[4] = {
1444 /* -- */ { BxImmediate_Ib, &BX_CPU_C::SHUFPS_VpsWpsIb },
1445 /* 66 */ { BxImmediate_Ib, &BX_CPU_C::SHUFPD_VpdWpdIb },
1446 /* F2 */ { 0, &BX_CPU_C::BxError },
1447 /* F3 */ { 0, &BX_CPU_C::BxError }
1450 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd0[4] = {
1451 /* -- */ { 0, &BX_CPU_C::BxError },
1452 /* 66 */ { 0, &BX_CPU_C::ADDSUBPD_VpdWpd }, // SSE3
1453 /* F2 */ { 0, &BX_CPU_C::ADDSUBPS_VpsWps }, // SSE3
1454 /* F3 */ { 0, &BX_CPU_C::BxError }
1457 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd1[4] = {
1458 /* -- */ { 0, &BX_CPU_C::PSRLW_PqQq },
1459 /* 66 */ { 0, &BX_CPU_C::PSRLW_VdqWdq },
1460 /* F2 */ { 0, &BX_CPU_C::BxError },
1461 /* F3 */ { 0, &BX_CPU_C::BxError }
1464 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd2[4] = {
1465 /* -- */ { 0, &BX_CPU_C::PSRLD_PqQq },
1466 /* 66 */ { 0, &BX_CPU_C::PSRLD_VdqWdq },
1467 /* F2 */ { 0, &BX_CPU_C::BxError },
1468 /* F3 */ { 0, &BX_CPU_C::BxError }
1471 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd3[4] = {
1472 /* -- */ { 0, &BX_CPU_C::PSRLQ_PqQq },
1473 /* 66 */ { 0, &BX_CPU_C::PSRLQ_VdqWdq },
1474 /* F2 */ { 0, &BX_CPU_C::BxError },
1475 /* F3 */ { 0, &BX_CPU_C::BxError }
1478 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd4[4] = {
1479 /* -- */ { 0, &BX_CPU_C::PADDQ_PqQq },
1480 /* 66 */ { 0, &BX_CPU_C::PADDQ_VdqWdq },
1481 /* F2 */ { 0, &BX_CPU_C::BxError },
1482 /* F3 */ { 0, &BX_CPU_C::BxError }
1485 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd5[4] = {
1486 /* -- */ { 0, &BX_CPU_C::PMULLW_PqQq },
1487 /* 66 */ { 0, &BX_CPU_C::PMULLW_VdqWdq },
1488 /* F2 */ { 0, &BX_CPU_C::BxError },
1489 /* F3 */ { 0, &BX_CPU_C::BxError }
1492 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd6[4] = {
1493 /* -- */ { 0, &BX_CPU_C::BxError },
1494 /* 66 */ { 0, &BX_CPU_C::MOVQ_WqVq },
1495 /* F2 */ { 0, &BX_CPU_C::MOVDQ2Q_PqVRq },
1496 /* F3 */ { 0, &BX_CPU_C::MOVQ2DQ_VdqQq }
1499 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd7[4] = {
1500 /* -- */ { 0, &BX_CPU_C::PMOVMSKB_GdPRq },
1501 /* 66 */ { 0, &BX_CPU_C::PMOVMSKB_GdUdq },
1502 /* F2 */ { 0, &BX_CPU_C::BxError },
1503 /* F3 */ { 0, &BX_CPU_C::BxError }
1506 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd8[4] = {
1507 /* -- */ { 0, &BX_CPU_C::PSUBUSB_PqQq },
1508 /* 66 */ { 0, &BX_CPU_C::PSUBUSB_VdqWdq },
1509 /* F2 */ { 0, &BX_CPU_C::BxError },
1510 /* F3 */ { 0, &BX_CPU_C::BxError }
1513 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fd9[4] = {
1514 /* -- */ { 0, &BX_CPU_C::PSUBUSW_PqQq },
1515 /* 66 */ { 0, &BX_CPU_C::PSUBUSW_VdqWdq },
1516 /* F2 */ { 0, &BX_CPU_C::BxError },
1517 /* F3 */ { 0, &BX_CPU_C::BxError }
1520 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fda[4] = {
1521 /* -- */ { 0, &BX_CPU_C::PMINUB_PqQq },
1522 /* 66 */ { 0, &BX_CPU_C::PMINUB_VdqWdq },
1523 /* F2 */ { 0, &BX_CPU_C::BxError },
1524 /* F3 */ { 0, &BX_CPU_C::BxError }
1527 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fdb[4] = {
1528 /* -- */ { 0, &BX_CPU_C::PAND_PqQq },
1529 /* 66 */ { 0, &BX_CPU_C::PAND_VdqWdq },
1530 /* F2 */ { 0, &BX_CPU_C::BxError },
1531 /* F3 */ { 0, &BX_CPU_C::BxError }
1534 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fdc[4] = {
1535 /* -- */ { 0, &BX_CPU_C::PADDUSB_PqQq },
1536 /* 66 */ { 0, &BX_CPU_C::PADDUSB_VdqWdq },
1537 /* F2 */ { 0, &BX_CPU_C::BxError },
1538 /* F3 */ { 0, &BX_CPU_C::BxError }
1541 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fdd[4] = {
1542 /* -- */ { 0, &BX_CPU_C::PADDUSW_PqQq },
1543 /* 66 */ { 0, &BX_CPU_C::PADDUSW_VdqWdq },
1544 /* F2 */ { 0, &BX_CPU_C::BxError },
1545 /* F3 */ { 0, &BX_CPU_C::BxError }
1548 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fde[4] = {
1549 /* -- */ { 0, &BX_CPU_C::PMAXUB_PqQq },
1550 /* 66 */ { 0, &BX_CPU_C::PMAXUB_VdqWdq },
1551 /* F2 */ { 0, &BX_CPU_C::BxError },
1552 /* F3 */ { 0, &BX_CPU_C::BxError }
1555 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fdf[4] = {
1556 /* -- */ { 0, &BX_CPU_C::PANDN_PqQq },
1557 /* 66 */ { 0, &BX_CPU_C::PANDN_VdqWdq },
1558 /* F2 */ { 0, &BX_CPU_C::BxError },
1559 /* F3 */ { 0, &BX_CPU_C::BxError }
1562 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe0[4] = {
1563 /* -- */ { 0, &BX_CPU_C::PAVGB_PqQq },
1564 /* 66 */ { 0, &BX_CPU_C::PAVGB_VdqWdq },
1565 /* F2 */ { 0, &BX_CPU_C::BxError },
1566 /* F3 */ { 0, &BX_CPU_C::BxError }
1569 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe1[4] = {
1570 /* -- */ { 0, &BX_CPU_C::PSRAW_PqQq },
1571 /* 66 */ { 0, &BX_CPU_C::PSRAW_VdqWdq },
1572 /* F2 */ { 0, &BX_CPU_C::BxError },
1573 /* F3 */ { 0, &BX_CPU_C::BxError }
1576 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe2[4] = {
1577 /* -- */ { 0, &BX_CPU_C::PSRAD_PqQq },
1578 /* 66 */ { 0, &BX_CPU_C::PSRAD_VdqWdq },
1579 /* F2 */ { 0, &BX_CPU_C::BxError },
1580 /* F3 */ { 0, &BX_CPU_C::BxError }
1583 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe3[4] = {
1584 /* -- */ { 0, &BX_CPU_C::PAVGW_PqQq },
1585 /* 66 */ { 0, &BX_CPU_C::PAVGW_VdqWdq },
1586 /* F2 */ { 0, &BX_CPU_C::BxError },
1587 /* F3 */ { 0, &BX_CPU_C::BxError }
1590 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe4[4] = {
1591 /* -- */ { 0, &BX_CPU_C::PMULHUW_PqQq },
1592 /* 66 */ { 0, &BX_CPU_C::PMULHUW_VdqWdq },
1593 /* F2 */ { 0, &BX_CPU_C::BxError },
1594 /* F3 */ { 0, &BX_CPU_C::BxError }
1597 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe5[4] = {
1598 /* -- */ { 0, &BX_CPU_C::PMULHW_PqQq },
1599 /* 66 */ { 0, &BX_CPU_C::PMULHW_VdqWdq },
1600 /* F2 */ { 0, &BX_CPU_C::BxError },
1601 /* F3 */ { 0, &BX_CPU_C::BxError }
1604 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe6[4] = {
1605 /* -- */ { 0, &BX_CPU_C::BxError },
1606 /* 66 */ { 0, &BX_CPU_C::CVTTPD2DQ_VqWpd },
1607 /* F2 */ { 0, &BX_CPU_C::CVTPD2DQ_VqWpd },
1608 /* F3 */ { 0, &BX_CPU_C::CVTDQ2PD_VpdWq }
1611 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe7[4] = {
1612 /* -- */ { 0, &BX_CPU_C::MOVNTQ_MqPq },
1613 /* 66 */ { 0, &BX_CPU_C::MOVNTDQ_MdqVdq },
1614 /* F2 */ { 0, &BX_CPU_C::BxError },
1615 /* F3 */ { 0, &BX_CPU_C::BxError }
1618 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe8[4] = {
1619 /* -- */ { 0, &BX_CPU_C::PSUBSB_PqQq },
1620 /* 66 */ { 0, &BX_CPU_C::PSUBSB_VdqWdq },
1621 /* F2 */ { 0, &BX_CPU_C::BxError },
1622 /* F3 */ { 0, &BX_CPU_C::BxError }
1625 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fe9[4] = {
1626 /* -- */ { 0, &BX_CPU_C::PSUBSW_PqQq },
1627 /* 66 */ { 0, &BX_CPU_C::PSUBSW_VdqWdq },
1628 /* F2 */ { 0, &BX_CPU_C::BxError },
1629 /* F3 */ { 0, &BX_CPU_C::BxError }
1632 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fea[4] = {
1633 /* -- */ { 0, &BX_CPU_C::PMINSW_PqQq },
1634 /* 66 */ { 0, &BX_CPU_C::PMINSW_VdqWdq },
1635 /* F2 */ { 0, &BX_CPU_C::BxError },
1636 /* F3 */ { 0, &BX_CPU_C::BxError }
1639 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0feb[4] = {
1640 /* -- */ { 0, &BX_CPU_C::POR_PqQq },
1641 /* 66 */ { 0, &BX_CPU_C::POR_VdqWdq },
1642 /* F2 */ { 0, &BX_CPU_C::BxError },
1643 /* F3 */ { 0, &BX_CPU_C::BxError }
1646 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fec[4] = {
1647 /* -- */ { 0, &BX_CPU_C::PADDSB_PqQq },
1648 /* 66 */ { 0, &BX_CPU_C::PADDSB_VdqWdq },
1649 /* F2 */ { 0, &BX_CPU_C::BxError },
1650 /* F3 */ { 0, &BX_CPU_C::BxError }
1653 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fed[4] = {
1654 /* -- */ { 0, &BX_CPU_C::PADDSW_PqQq },
1655 /* 66 */ { 0, &BX_CPU_C::PADDSW_VdqWdq },
1656 /* F2 */ { 0, &BX_CPU_C::BxError },
1657 /* F3 */ { 0, &BX_CPU_C::BxError }
1660 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fee[4] = {
1661 /* -- */ { 0, &BX_CPU_C::PMAXSW_PqQq },
1662 /* 66 */ { 0, &BX_CPU_C::PMAXSW_VdqWdq },
1663 /* F2 */ { 0, &BX_CPU_C::BxError },
1664 /* F3 */ { 0, &BX_CPU_C::BxError }
1667 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0fef[4] = {
1668 /* -- */ { 0, &BX_CPU_C::PXOR_PqQq },
1669 /* 66 */ { 0, &BX_CPU_C::PXOR_VdqWdq },
1670 /* F2 */ { 0, &BX_CPU_C::BxError },
1671 /* F3 */ { 0, &BX_CPU_C::BxError }
1674 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff0[4] = {
1675 /* -- */ { 0, &BX_CPU_C::BxError },
1676 /* 66 */ { 0, &BX_CPU_C::BxError },
1677 /* F2 */ { 0, &BX_CPU_C::LDDQU_VdqMdq }, // SSE3
1678 /* F3 */ { 0, &BX_CPU_C::BxError }
1681 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff1[4] = {
1682 /* -- */ { 0, &BX_CPU_C::PSLLW_PqQq },
1683 /* 66 */ { 0, &BX_CPU_C::PSLLW_VdqWdq },
1684 /* F2 */ { 0, &BX_CPU_C::BxError },
1685 /* F3 */ { 0, &BX_CPU_C::BxError }
1688 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff2[4] = {
1689 /* -- */ { 0, &BX_CPU_C::PSLLD_PqQq },
1690 /* 66 */ { 0, &BX_CPU_C::PSLLD_VdqWdq },
1691 /* F2 */ { 0, &BX_CPU_C::BxError },
1692 /* F3 */ { 0, &BX_CPU_C::BxError }
1695 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff3[4] = {
1696 /* -- */ { 0, &BX_CPU_C::PSLLQ_PqQq },
1697 /* 66 */ { 0, &BX_CPU_C::PSLLQ_VdqWdq },
1698 /* F2 */ { 0, &BX_CPU_C::BxError },
1699 /* F3 */ { 0, &BX_CPU_C::BxError }
1702 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff4[4] = {
1703 /* -- */ { 0, &BX_CPU_C::PMULUDQ_PqQq },
1704 /* 66 */ { 0, &BX_CPU_C::PMULUDQ_VdqWdq },
1705 /* F2 */ { 0, &BX_CPU_C::BxError },
1706 /* F3 */ { 0, &BX_CPU_C::BxError }
1709 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff5[4] = {
1710 /* -- */ { 0, &BX_CPU_C::PMADDWD_PqQq },
1711 /* 66 */ { 0, &BX_CPU_C::PMADDWD_VdqWdq },
1712 /* F2 */ { 0, &BX_CPU_C::BxError },
1713 /* F3 */ { 0, &BX_CPU_C::BxError }
1716 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff6[4] = {
1717 /* -- */ { 0, &BX_CPU_C::PSADBW_PqQq },
1718 /* 66 */ { 0, &BX_CPU_C::PSADBW_VdqWdq },
1719 /* F2 */ { 0, &BX_CPU_C::BxError },
1720 /* F3 */ { 0, &BX_CPU_C::BxError }
1723 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff7[4] = {
1724 /* -- */ { 0, &BX_CPU_C::MASKMOVQ_PqPRq },
1725 /* 66 */ { 0, &BX_CPU_C::MASKMOVDQU_VdqUdq },
1726 /* F2 */ { 0, &BX_CPU_C::BxError },
1727 /* F3 */ { 0, &BX_CPU_C::BxError }
1730 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff8[4] = {
1731 /* -- */ { 0, &BX_CPU_C::PSUBB_PqQq },
1732 /* 66 */ { 0, &BX_CPU_C::PSUBB_VdqWdq },
1733 /* F2 */ { 0, &BX_CPU_C::BxError },
1734 /* F3 */ { 0, &BX_CPU_C::BxError }
1737 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ff9[4] = {
1738 /* -- */ { 0, &BX_CPU_C::PSUBW_PqQq },
1739 /* 66 */ { 0, &BX_CPU_C::PSUBW_VdqWdq },
1740 /* F2 */ { 0, &BX_CPU_C::BxError },
1741 /* F3 */ { 0, &BX_CPU_C::BxError }
1744 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ffa[4] = {
1745 /* -- */ { 0, &BX_CPU_C::PSUBD_PqQq },
1746 /* 66 */ { 0, &BX_CPU_C::PSUBD_VdqWdq },
1747 /* F2 */ { 0, &BX_CPU_C::BxError },
1748 /* F3 */ { 0, &BX_CPU_C::BxError }
1751 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ffb[4] = {
1752 /* -- */ { 0, &BX_CPU_C::PSUBQ_PqQq },
1753 /* 66 */ { 0, &BX_CPU_C::PSUBQ_VdqWdq },
1754 /* F2 */ { 0, &BX_CPU_C::BxError },
1755 /* F3 */ { 0, &BX_CPU_C::BxError }
1758 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ffc[4] = {
1759 /* -- */ { 0, &BX_CPU_C::PADDB_PqQq },
1760 /* 66 */ { 0, &BX_CPU_C::PADDB_VdqWdq },
1761 /* F2 */ { 0, &BX_CPU_C::BxError },
1762 /* F3 */ { 0, &BX_CPU_C::BxError }
1765 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ffd[4] = {
1766 /* -- */ { 0, &BX_CPU_C::PADDW_PqQq },
1767 /* 66 */ { 0, &BX_CPU_C::PADDW_VdqWdq },
1768 /* F2 */ { 0, &BX_CPU_C::BxError },
1769 /* F3 */ { 0, &BX_CPU_C::BxError }
1772 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0ffe[4] = {
1773 /* -- */ { 0, &BX_CPU_C::PADDD_PqQq },
1774 /* 66 */ { 0, &BX_CPU_C::PADDD_VdqWdq },
1775 /* F2 */ { 0, &BX_CPU_C::BxError },
1776 /* F3 */ { 0, &BX_CPU_C::BxError }
1779 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1202[4] = {
1780 /* -- */ { 0, &BX_CPU_C::PSRLW_PqIb },
1781 /* 66 */ { 0, &BX_CPU_C::PSRLW_UdqIb },
1782 /* F2 */ { 0, &BX_CPU_C::BxError },
1783 /* F3 */ { 0, &BX_CPU_C::BxError }
1786 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1204[4] = {
1787 /* -- */ { 0, &BX_CPU_C::PSRAW_PqIb },
1788 /* 66 */ { 0, &BX_CPU_C::PSRAW_UdqIb },
1789 /* F2 */ { 0, &BX_CPU_C::BxError },
1790 /* F3 */ { 0, &BX_CPU_C::BxError }
1793 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1206[4] = {
1794 /* -- */ { 0, &BX_CPU_C::PSLLW_PqIb },
1795 /* 66 */ { 0, &BX_CPU_C::PSLLW_UdqIb },
1796 /* F2 */ { 0, &BX_CPU_C::BxError },
1797 /* F3 */ { 0, &BX_CPU_C::BxError }
1800 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1302[4] = {
1801 /* -- */ { 0, &BX_CPU_C::PSRLD_PqIb },
1802 /* 66 */ { 0, &BX_CPU_C::PSRLD_UdqIb },
1803 /* F2 */ { 0, &BX_CPU_C::BxError },
1804 /* F3 */ { 0, &BX_CPU_C::BxError }
1807 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1304[4] = {
1808 /* -- */ { 0, &BX_CPU_C::PSRAD_PqIb },
1809 /* 66 */ { 0, &BX_CPU_C::PSRAD_UdqIb },
1810 /* F2 */ { 0, &BX_CPU_C::BxError },
1811 /* F3 */ { 0, &BX_CPU_C::BxError }
1814 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1306[4] = {
1815 /* -- */ { 0, &BX_CPU_C::PSLLD_PqIb },
1816 /* 66 */ { 0, &BX_CPU_C::PSLLD_UdqIb },
1817 /* F2 */ { 0, &BX_CPU_C::BxError },
1818 /* F3 */ { 0, &BX_CPU_C::BxError }
1821 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1402[4] = {
1822 /* -- */ { 0, &BX_CPU_C::PSRLQ_PqIb },
1823 /* 66 */ { 0, &BX_CPU_C::PSRLQ_UdqIb },
1824 /* F2 */ { 0, &BX_CPU_C::BxError },
1825 /* F3 */ { 0, &BX_CPU_C::BxError }
1828 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1403[4] = {
1829 /* -- */ { 0, &BX_CPU_C::BxError },
1830 /* 66 */ { 0, &BX_CPU_C::PSRLDQ_UdqIb },
1831 /* F2 */ { 0, &BX_CPU_C::BxError },
1832 /* F3 */ { 0, &BX_CPU_C::BxError }
1835 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1406[4] = {
1836 /* -- */ { 0, &BX_CPU_C::PSLLQ_PqIb },
1837 /* 66 */ { 0, &BX_CPU_C::PSLLQ_UdqIb },
1838 /* F2 */ { 0, &BX_CPU_C::BxError },
1839 /* F3 */ { 0, &BX_CPU_C::BxError }
1842 static const BxOpcodeInfo_t BxOpcodeGroupSSE_G1407[4] = {
1843 /* -- */ { 0, &BX_CPU_C::BxError },
1844 /* 66 */ { 0, &BX_CPU_C::PSLLDQ_UdqIb },
1845 /* F2 */ { 0, &BX_CPU_C::BxError },
1846 /* F3 */ { 0, &BX_CPU_C::BxError }
1849 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
1851 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3800[4] = {
1852 /* -- */ { 0, &BX_CPU_C::PSHUFB_PqQq },
1853 /* 66 */ { 0, &BX_CPU_C::PSHUFB_VdqWdq },
1854 /* F2 */ { 0, &BX_CPU_C::BxError },
1855 /* F3 */ { 0, &BX_CPU_C::BxError }
1858 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3801[4] = {
1859 /* -- */ { 0, &BX_CPU_C::PHADDW_PqQq },
1860 /* 66 */ { 0, &BX_CPU_C::PHADDW_VdqWdq },
1861 /* F2 */ { 0, &BX_CPU_C::BxError },
1862 /* F3 */ { 0, &BX_CPU_C::BxError }
1865 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3802[4] = {
1866 /* -- */ { 0, &BX_CPU_C::PHADDD_PqQq },
1867 /* 66 */ { 0, &BX_CPU_C::PHADDD_VdqWdq },
1868 /* F2 */ { 0, &BX_CPU_C::BxError },
1869 /* F3 */ { 0, &BX_CPU_C::BxError }
1872 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3803[4] = {
1873 /* -- */ { 0, &BX_CPU_C::PHADDSW_PqQq },
1874 /* 66 */ { 0, &BX_CPU_C::PHADDSW_VdqWdq },
1875 /* F2 */ { 0, &BX_CPU_C::BxError },
1876 /* F3 */ { 0, &BX_CPU_C::BxError }
1879 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3804[4] = {
1880 /* -- */ { 0, &BX_CPU_C::PMADDUBSW_PqQq },
1881 /* 66 */ { 0, &BX_CPU_C::PMADDUBSW_VdqWdq },
1882 /* F2 */ { 0, &BX_CPU_C::BxError },
1883 /* F3 */ { 0, &BX_CPU_C::BxError }
1886 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3805[4] = {
1887 /* -- */ { 0, &BX_CPU_C::PHSUBW_PqQq },
1888 /* 66 */ { 0, &BX_CPU_C::PHSUBW_VdqWdq },
1889 /* F2 */ { 0, &BX_CPU_C::BxError },
1890 /* F3 */ { 0, &BX_CPU_C::BxError }
1893 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3806[4] = {
1894 /* -- */ { 0, &BX_CPU_C::PHSUBD_PqQq },
1895 /* 66 */ { 0, &BX_CPU_C::PHSUBD_VdqWdq },
1896 /* F2 */ { 0, &BX_CPU_C::BxError },
1897 /* F3 */ { 0, &BX_CPU_C::BxError }
1900 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3807[4] = {
1901 /* -- */ { 0, &BX_CPU_C::PHSUBSW_PqQq },
1902 /* 66 */ { 0, &BX_CPU_C::PHSUBSW_VdqWdq },
1903 /* F2 */ { 0, &BX_CPU_C::BxError },
1904 /* F3 */ { 0, &BX_CPU_C::BxError }
1907 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3808[4] = {
1908 /* -- */ { 0, &BX_CPU_C::PSIGNB_PqQq },
1909 /* 66 */ { 0, &BX_CPU_C::PSIGNB_VdqWdq },
1910 /* F2 */ { 0, &BX_CPU_C::BxError },
1911 /* F3 */ { 0, &BX_CPU_C::BxError }
1914 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3809[4] = {
1915 /* -- */ { 0, &BX_CPU_C::PSIGNW_PqQq },
1916 /* 66 */ { 0, &BX_CPU_C::PSIGNW_VdqWdq },
1917 /* F2 */ { 0, &BX_CPU_C::BxError },
1918 /* F3 */ { 0, &BX_CPU_C::BxError }
1921 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3810[4] = {
1922 /* -- */ { 0, &BX_CPU_C::BxError },
1923 /* 66 */ { 0, &BX_CPU_C::PBLENDVB_VdqWdq },
1924 /* F2 */ { 0, &BX_CPU_C::BxError },
1925 /* F3 */ { 0, &BX_CPU_C::BxError }
1928 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3814[4] = {
1929 /* -- */ { 0, &BX_CPU_C::BxError },
1930 /* 66 */ { 0, &BX_CPU_C::BLENDVPS_VpsWps },
1931 /* F2 */ { 0, &BX_CPU_C::BxError },
1932 /* F3 */ { 0, &BX_CPU_C::BxError }
1935 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3815[4] = {
1936 /* -- */ { 0, &BX_CPU_C::BxError },
1937 /* 66 */ { 0, &BX_CPU_C::BLENDVPD_VpdWpd },
1938 /* F2 */ { 0, &BX_CPU_C::BxError },
1939 /* F3 */ { 0, &BX_CPU_C::BxError }
1942 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3817[4] = {
1943 /* -- */ { 0, &BX_CPU_C::BxError },
1944 /* 66 */ { 0, &BX_CPU_C::PTEST_VdqWdq },
1945 /* F2 */ { 0, &BX_CPU_C::BxError },
1946 /* F3 */ { 0, &BX_CPU_C::BxError }
1949 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3820[4] = {
1950 /* -- */ { 0, &BX_CPU_C::BxError },
1951 /* 66 */ { 0, &BX_CPU_C::PMOVSXBW_VdqWq },
1952 /* F2 */ { 0, &BX_CPU_C::BxError },
1953 /* F3 */ { 0, &BX_CPU_C::BxError }
1956 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3821[4] = {
1957 /* -- */ { 0, &BX_CPU_C::BxError },
1958 /* 66 */ { 0, &BX_CPU_C::PMOVSXBD_VdqWd },
1959 /* F2 */ { 0, &BX_CPU_C::BxError },
1960 /* F3 */ { 0, &BX_CPU_C::BxError }
1963 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3822[4] = {
1964 /* -- */ { 0, &BX_CPU_C::BxError },
1965 /* 66 */ { 0, &BX_CPU_C::PMOVSXBQ_VdqWw },
1966 /* F2 */ { 0, &BX_CPU_C::BxError },
1967 /* F3 */ { 0, &BX_CPU_C::BxError }
1970 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3823[4] = {
1971 /* -- */ { 0, &BX_CPU_C::BxError },
1972 /* 66 */ { 0, &BX_CPU_C::PMOVSXWD_VdqWq },
1973 /* F2 */ { 0, &BX_CPU_C::BxError },
1974 /* F3 */ { 0, &BX_CPU_C::BxError }
1977 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3824[4] = {
1978 /* -- */ { 0, &BX_CPU_C::BxError },
1979 /* 66 */ { 0, &BX_CPU_C::PMOVSXWQ_VdqWd },
1980 /* F2 */ { 0, &BX_CPU_C::BxError },
1981 /* F3 */ { 0, &BX_CPU_C::BxError }
1984 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3825[4] = {
1985 /* -- */ { 0, &BX_CPU_C::BxError },
1986 /* 66 */ { 0, &BX_CPU_C::PMOVSXDQ_VdqWq },
1987 /* F2 */ { 0, &BX_CPU_C::BxError },
1988 /* F3 */ { 0, &BX_CPU_C::BxError }
1991 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3828[4] = {
1992 /* -- */ { 0, &BX_CPU_C::BxError },
1993 /* 66 */ { 0, &BX_CPU_C::PMULDQ_VdqWdq },
1994 /* F2 */ { 0, &BX_CPU_C::BxError },
1995 /* F3 */ { 0, &BX_CPU_C::BxError }
1998 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3829[4] = {
1999 /* -- */ { 0, &BX_CPU_C::BxError },
2000 /* 66 */ { 0, &BX_CPU_C::PCMPEQQ_VdqWdq },
2001 /* F2 */ { 0, &BX_CPU_C::BxError },
2002 /* F3 */ { 0, &BX_CPU_C::BxError }
2005 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f382a[4] = {
2006 /* -- */ { 0, &BX_CPU_C::BxError },
2007 /* 66 */ { 0, &BX_CPU_C::MOVNTDQA_VdqMdq },
2008 /* F2 */ { 0, &BX_CPU_C::BxError },
2009 /* F3 */ { 0, &BX_CPU_C::BxError }
2012 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f382b[4] = {
2013 /* -- */ { 0, &BX_CPU_C::BxError },
2014 /* 66 */ { 0, &BX_CPU_C::PACKUSDW_VdqWdq },
2015 /* F2 */ { 0, &BX_CPU_C::BxError },
2016 /* F3 */ { 0, &BX_CPU_C::BxError }
2019 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f380a[4] = {
2020 /* -- */ { 0, &BX_CPU_C::PSIGND_PqQq },
2021 /* 66 */ { 0, &BX_CPU_C::PSIGND_VdqWdq },
2022 /* F2 */ { 0, &BX_CPU_C::BxError },
2023 /* F3 */ { 0, &BX_CPU_C::BxError }
2026 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f380b[4] = {
2027 /* -- */ { 0, &BX_CPU_C::PMULHRSW_PqQq },
2028 /* 66 */ { 0, &BX_CPU_C::PMULHRSW_VdqWdq },
2029 /* F2 */ { 0, &BX_CPU_C::BxError },
2030 /* F3 */ { 0, &BX_CPU_C::BxError }
2033 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f381c[4] = {
2034 /* -- */ { 0, &BX_CPU_C::PABSB_PqQq },
2035 /* 66 */ { 0, &BX_CPU_C::PABSB_VdqWdq },
2036 /* F2 */ { 0, &BX_CPU_C::BxError },
2037 /* F3 */ { 0, &BX_CPU_C::BxError }
2040 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f381d[4] = {
2041 /* -- */ { 0, &BX_CPU_C::PABSW_PqQq },
2042 /* 66 */ { 0, &BX_CPU_C::PABSW_VdqWdq },
2043 /* F2 */ { 0, &BX_CPU_C::BxError },
2044 /* F3 */ { 0, &BX_CPU_C::BxError }
2047 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f381e[4] = {
2048 /* -- */ { 0, &BX_CPU_C::PABSD_PqQq },
2049 /* 66 */ { 0, &BX_CPU_C::PABSD_VdqWdq },
2050 /* F2 */ { 0, &BX_CPU_C::BxError },
2051 /* F3 */ { 0, &BX_CPU_C::BxError }
2054 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3830[4] = {
2055 /* -- */ { 0, &BX_CPU_C::BxError },
2056 /* 66 */ { 0, &BX_CPU_C::PMOVZXBW_VdqWq },
2057 /* F2 */ { 0, &BX_CPU_C::BxError },
2058 /* F3 */ { 0, &BX_CPU_C::BxError }
2061 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3831[4] = {
2062 /* -- */ { 0, &BX_CPU_C::BxError },
2063 /* 66 */ { 0, &BX_CPU_C::PMOVZXBD_VdqWd },
2064 /* F2 */ { 0, &BX_CPU_C::BxError },
2065 /* F3 */ { 0, &BX_CPU_C::BxError }
2068 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3832[4] = {
2069 /* -- */ { 0, &BX_CPU_C::BxError },
2070 /* 66 */ { 0, &BX_CPU_C::PMOVZXBQ_VdqWw },
2071 /* F2 */ { 0, &BX_CPU_C::BxError },
2072 /* F3 */ { 0, &BX_CPU_C::BxError }
2075 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3833[4] = {
2076 /* -- */ { 0, &BX_CPU_C::BxError },
2077 /* 66 */ { 0, &BX_CPU_C::PMOVZXWD_VdqWq },
2078 /* F2 */ { 0, &BX_CPU_C::BxError },
2079 /* F3 */ { 0, &BX_CPU_C::BxError }
2082 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3834[4] = {
2083 /* -- */ { 0, &BX_CPU_C::BxError },
2084 /* 66 */ { 0, &BX_CPU_C::PMOVZXWQ_VdqWd },
2085 /* F2 */ { 0, &BX_CPU_C::BxError },
2086 /* F3 */ { 0, &BX_CPU_C::BxError }
2089 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3835[4] = {
2090 /* -- */ { 0, &BX_CPU_C::BxError },
2091 /* 66 */ { 0, &BX_CPU_C::PMOVZXDQ_VdqWq },
2092 /* F2 */ { 0, &BX_CPU_C::BxError },
2093 /* F3 */ { 0, &BX_CPU_C::BxError }
2096 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3838[4] = {
2097 /* -- */ { 0, &BX_CPU_C::BxError },
2098 /* 66 */ { 0, &BX_CPU_C::PMINSB_VdqWdq },
2099 /* F2 */ { 0, &BX_CPU_C::BxError },
2100 /* F3 */ { 0, &BX_CPU_C::BxError }
2103 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3839[4] = {
2104 /* -- */ { 0, &BX_CPU_C::BxError },
2105 /* 66 */ { 0, &BX_CPU_C::PMINSD_VdqWdq },
2106 /* F2 */ { 0, &BX_CPU_C::BxError },
2107 /* F3 */ { 0, &BX_CPU_C::BxError }
2110 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383a[4] = {
2111 /* -- */ { 0, &BX_CPU_C::BxError },
2112 /* 66 */ { 0, &BX_CPU_C::PMINUW_VdqWdq },
2113 /* F2 */ { 0, &BX_CPU_C::BxError },
2114 /* F3 */ { 0, &BX_CPU_C::BxError }
2117 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383b[4] = {
2118 /* -- */ { 0, &BX_CPU_C::BxError },
2119 /* 66 */ { 0, &BX_CPU_C::PMINUD_VdqWdq },
2120 /* F2 */ { 0, &BX_CPU_C::BxError },
2121 /* F3 */ { 0, &BX_CPU_C::BxError }
2124 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383c[4] = {
2125 /* -- */ { 0, &BX_CPU_C::BxError },
2126 /* 66 */ { 0, &BX_CPU_C::PMAXSB_VdqWdq },
2127 /* F2 */ { 0, &BX_CPU_C::BxError },
2128 /* F3 */ { 0, &BX_CPU_C::BxError }
2131 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383d[4] = {
2132 /* -- */ { 0, &BX_CPU_C::BxError },
2133 /* 66 */ { 0, &BX_CPU_C::PMAXSD_VdqWdq },
2134 /* F2 */ { 0, &BX_CPU_C::BxError },
2135 /* F3 */ { 0, &BX_CPU_C::BxError }
2138 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383e[4] = {
2139 /* -- */ { 0, &BX_CPU_C::BxError },
2140 /* 66 */ { 0, &BX_CPU_C::PMAXUW_VdqWdq },
2141 /* F2 */ { 0, &BX_CPU_C::BxError },
2142 /* F3 */ { 0, &BX_CPU_C::BxError }
2145 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f383f[4] = {
2146 /* -- */ { 0, &BX_CPU_C::BxError },
2147 /* 66 */ { 0, &BX_CPU_C::PMAXUD_VdqWdq },
2148 /* F2 */ { 0, &BX_CPU_C::BxError },
2149 /* F3 */ { 0, &BX_CPU_C::BxError }
2152 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3840[4] = {
2153 /* -- */ { 0, &BX_CPU_C::BxError },
2154 /* 66 */ { 0, &BX_CPU_C::PMULLD_VdqWdq },
2155 /* F2 */ { 0, &BX_CPU_C::BxError },
2156 /* F3 */ { 0, &BX_CPU_C::BxError }
2159 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3841[4] = {
2160 /* -- */ { 0, &BX_CPU_C::BxError },
2161 /* 66 */ { 0, &BX_CPU_C::PHMINPOSUW_VdqWdq },
2162 /* F2 */ { 0, &BX_CPU_C::BxError },
2163 /* F3 */ { 0, &BX_CPU_C::BxError }
2166 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a08[4] = {
2167 /* -- */ { 0, &BX_CPU_C::BxError },
2168 /* 66 */ { 0, &BX_CPU_C::ROUNDPS_VpsWpsIb },
2169 /* F2 */ { 0, &BX_CPU_C::BxError },
2170 /* F3 */ { 0, &BX_CPU_C::BxError }
2173 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a09[4] = {
2174 /* -- */ { 0, &BX_CPU_C::BxError },
2175 /* 66 */ { 0, &BX_CPU_C::ROUNDPD_VpdWpdIb },
2176 /* F2 */ { 0, &BX_CPU_C::BxError },
2177 /* F3 */ { 0, &BX_CPU_C::BxError }
2180 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0a[4] = {
2181 /* -- */ { 0, &BX_CPU_C::BxError },
2182 /* 66 */ { 0, &BX_CPU_C::ROUNDSS_VssWssIb },
2183 /* F2 */ { 0, &BX_CPU_C::BxError },
2184 /* F3 */ { 0, &BX_CPU_C::BxError }
2187 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0b[4] = {
2188 /* -- */ { 0, &BX_CPU_C::BxError },
2189 /* 66 */ { 0, &BX_CPU_C::ROUNDSD_VsdWsdIb },
2190 /* F2 */ { 0, &BX_CPU_C::BxError },
2191 /* F3 */ { 0, &BX_CPU_C::BxError }
2194 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0c[4] = {
2195 /* -- */ { 0, &BX_CPU_C::BxError },
2196 /* 66 */ { 0, &BX_CPU_C::BLENDPS_VpsWpsIb },
2197 /* F2 */ { 0, &BX_CPU_C::BxError },
2198 /* F3 */ { 0, &BX_CPU_C::BxError }
2201 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0d[4] = {
2202 /* -- */ { 0, &BX_CPU_C::BxError },
2203 /* 66 */ { 0, &BX_CPU_C::BLENDPD_VpdWpdIb },
2204 /* F2 */ { 0, &BX_CPU_C::BxError },
2205 /* F3 */ { 0, &BX_CPU_C::BxError }
2208 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0e[4] = {
2209 /* -- */ { 0, &BX_CPU_C::BxError },
2210 /* 66 */ { 0, &BX_CPU_C::PBLENDW_VdqWdqIb },
2211 /* F2 */ { 0, &BX_CPU_C::BxError },
2212 /* F3 */ { 0, &BX_CPU_C::BxError }
2215 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a0f[4] = {
2216 /* -- */ { 0, &BX_CPU_C::PALIGNR_PqQqIb },
2217 /* 66 */ { 0, &BX_CPU_C::PALIGNR_VdqWdqIb },
2218 /* F2 */ { 0, &BX_CPU_C::BxError },
2219 /* F3 */ { 0, &BX_CPU_C::BxError }
2222 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a14[4] = {
2223 /* -- */ { 0, &BX_CPU_C::BxError },
2224 /* 66 */ { 0, &BX_CPU_C::PEXTRB_HbdUdqIb },
2225 /* F2 */ { 0, &BX_CPU_C::BxError },
2226 /* F3 */ { 0, &BX_CPU_C::BxError }
2229 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a15[4] = {
2230 /* -- */ { 0, &BX_CPU_C::BxError },
2231 /* 66 */ { 0, &BX_CPU_C::PEXTRW_HwdUdqIb },
2232 /* F2 */ { 0, &BX_CPU_C::BxError },
2233 /* F3 */ { 0, &BX_CPU_C::BxError }
2236 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a16[4] = {
2237 /* -- */ { 0, &BX_CPU_C::BxError },
2238 /* 66 */ { 0, &BX_CPU_C::PEXTRD_HdUdqIb },
2239 /* F2 */ { 0, &BX_CPU_C::BxError },
2240 /* F3 */ { 0, &BX_CPU_C::BxError }
2243 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a17[4] = {
2244 /* -- */ { 0, &BX_CPU_C::BxError },
2245 /* 66 */ { 0, &BX_CPU_C::EXTRACTPS_HdUpsIb },
2246 /* F2 */ { 0, &BX_CPU_C::BxError },
2247 /* F3 */ { 0, &BX_CPU_C::BxError }
2250 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a20[4] = {
2251 /* -- */ { 0, &BX_CPU_C::BxError },
2252 /* 66 */ { 0, &BX_CPU_C::PINSRB_VdqEbIb },
2253 /* F2 */ { 0, &BX_CPU_C::BxError },
2254 /* F3 */ { 0, &BX_CPU_C::BxError }
2257 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a21[4] = {
2258 /* -- */ { 0, &BX_CPU_C::BxError },
2259 /* 66 */ { 0, &BX_CPU_C::INSERTPS_VpsWssIb },
2260 /* F2 */ { 0, &BX_CPU_C::BxError },
2261 /* F3 */ { 0, &BX_CPU_C::BxError }
2264 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a22[4] = {
2265 /* -- */ { 0, &BX_CPU_C::BxError },
2266 /* 66 */ { 0, &BX_CPU_C::PINSRD_VdqEdIb },
2267 /* F2 */ { 0, &BX_CPU_C::BxError },
2268 /* F3 */ { 0, &BX_CPU_C::BxError }
2271 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a40[4] = {
2272 /* -- */ { 0, &BX_CPU_C::BxError },
2273 /* 66 */ { 0, &BX_CPU_C::DPPS_VpsWpsIb },
2274 /* F2 */ { 0, &BX_CPU_C::BxError },
2275 /* F3 */ { 0, &BX_CPU_C::BxError }
2278 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a41[4] = {
2279 /* -- */ { 0, &BX_CPU_C::BxError },
2280 /* 66 */ { 0, &BX_CPU_C::DPPD_VpdWpdIb },
2281 /* F2 */ { 0, &BX_CPU_C::BxError },
2282 /* F3 */ { 0, &BX_CPU_C::BxError }
2285 static const BxOpcodeInfo_t BxOpcodeGroupSSE_0f3a42[4] = {
2286 /* -- */ { 0, &BX_CPU_C::BxError },
2287 /* 66 */ { 0, &BX_CPU_C::MPSADBW_VdqWdqIb },
2288 /* F2 */ { 0, &BX_CPU_C::BxError },
2289 /* F3 */ { 0, &BX_CPU_C::BxError }
2292 /* ************************************************************************ */
2293 /* 3-byte opcode table (Table A-4, 0F 38) */
2295 static const BxOpcodeInfo_t BxOpcode3ByteOp0f380x[16] = {
2296 /* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3800 },
2297 /* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3801 },
2298 /* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3802 },
2299 /* 03 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3803 },
2300 /* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3804 },
2301 /* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3805 },
2302 /* 06 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3806 },
2303 /* 07 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3807 },
2304 /* 08 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3808 },
2305 /* 09 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3809 },
2306 /* 0A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f380a },
2307 /* 0B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f380b },
2308 /* 0C */ { 0, &BX_CPU_C::BxError },
2309 /* 0D */ { 0, &BX_CPU_C::BxError },
2310 /* 0E */ { 0, &BX_CPU_C::BxError },
2311 /* 0F */ { 0, &BX_CPU_C::BxError }
2314 static const BxOpcodeInfo_t BxOpcode3ByteOp0f381x[16] = {
2315 /* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3810 },
2316 /* 01 */ { 0, &BX_CPU_C::BxError },
2317 /* 02 */ { 0, &BX_CPU_C::BxError },
2318 /* 03 */ { 0, &BX_CPU_C::BxError },
2319 /* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3814 },
2320 /* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3815 },
2321 /* 06 */ { 0, &BX_CPU_C::BxError },
2322 /* 07 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3817 },
2323 /* 08 */ { 0, &BX_CPU_C::BxError },
2324 /* 09 */ { 0, &BX_CPU_C::BxError },
2325 /* 0A */ { 0, &BX_CPU_C::BxError },
2326 /* 0B */ { 0, &BX_CPU_C::BxError },
2327 /* 0C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381c },
2328 /* 0D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381d },
2329 /* 0E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f381e },
2330 /* 0F */ { 0, &BX_CPU_C::BxError }
2333 static const BxOpcodeInfo_t BxOpcode3ByteOp0f382x[16] = {
2334 /* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3820 },
2335 /* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3821 },
2336 /* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3822 },
2337 /* 03 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3823 },
2338 /* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3824 },
2339 /* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3825 },
2340 /* 06 */ { 0, &BX_CPU_C::BxError },
2341 /* 07 */ { 0, &BX_CPU_C::BxError },
2342 /* 08 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3828 },
2343 /* 09 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3829 },
2344 /* 0A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382a },
2345 /* 0B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f382b },
2346 /* 0C */ { 0, &BX_CPU_C::BxError },
2347 /* 0D */ { 0, &BX_CPU_C::BxError },
2348 /* 0E */ { 0, &BX_CPU_C::BxError },
2349 /* 0F */ { 0, &BX_CPU_C::BxError }
2352 static const BxOpcodeInfo_t BxOpcode3ByteOp0f383x[16] = {
2353 /* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3830 },
2354 /* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3831 },
2355 /* 02 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3832 },
2356 /* 03 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3833 },
2357 /* 04 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3834 },
2358 /* 05 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3835 },
2359 /* 06 */ { 0, &BX_CPU_C::BxError },
2360 /* 07 */ { 0, &BX_CPU_C::BxError },
2361 /* 08 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3838 },
2362 /* 09 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3839 },
2363 /* 0A */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383a },
2364 /* 0B */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383b },
2365 /* 0C */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383c },
2366 /* 0D */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383d },
2367 /* 0E */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383e },
2368 /* 0F */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f383f }
2371 static const BxOpcodeInfo_t BxOpcode3ByteOp0f384x[16] = {
2372 /* 00 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3840 },
2373 /* 01 */ { BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3841 },
2374 /* 02 */ { 0, &BX_CPU_C::BxError },
2375 /* 03 */ { 0, &BX_CPU_C::BxError },
2376 /* 04 */ { 0, &BX_CPU_C::BxError },
2377 /* 05 */ { 0, &BX_CPU_C::BxError },
2378 /* 06 */ { 0, &BX_CPU_C::BxError },
2379 /* 07 */ { 0, &BX_CPU_C::BxError },
2380 /* 08 */ { 0, &BX_CPU_C::BxError },
2381 /* 09 */ { 0, &BX_CPU_C::BxError },
2382 /* 0A */ { 0, &BX_CPU_C::BxError },
2383 /* 0B */ { 0, &BX_CPU_C::BxError },
2384 /* 0C */ { 0, &BX_CPU_C::BxError },
2385 /* 0D */ { 0, &BX_CPU_C::BxError },
2386 /* 0E */ { 0, &BX_CPU_C::BxError },
2387 /* 0F */ { 0, &BX_CPU_C::BxError }
2390 static const BxOpcodeInfo_t BxOpcode3ByteTableA4[16] = {
2391 /* 00 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f380x },
2392 /* 01 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f381x },
2393 /* 02 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f382x },
2394 /* 03 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f383x },
2395 /* 04 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f384x },
2396 /* 05 */ { 0, &BX_CPU_C::BxError },
2397 /* 06 */ { 0, &BX_CPU_C::BxError },
2398 /* 07 */ { 0, &BX_CPU_C::BxError },
2399 /* 08 */ { 0, &BX_CPU_C::BxError },
2400 /* 09 */ { 0, &BX_CPU_C::BxError },
2401 /* 0A */ { 0, &BX_CPU_C::BxError },
2402 /* 0B */ { 0, &BX_CPU_C::BxError },
2403 /* 0C */ { 0, &BX_CPU_C::BxError },
2404 /* 0D */ { 0, &BX_CPU_C::BxError },
2405 /* 0E */ { 0, &BX_CPU_C::BxError },
2406 /* 0F */ { 0, &BX_CPU_C::BxError }
2409 /* ************************************************************************ */
2410 /* 3-byte opcode table (Table A-5, 0F 3A) */
2412 static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a0x[16] = {
2413 /* 00 */ { 0, &BX_CPU_C::BxError },
2414 /* 01 */ { 0, &BX_CPU_C::BxError },
2415 /* 02 */ { 0, &BX_CPU_C::BxError },
2416 /* 03 */ { 0, &BX_CPU_C::BxError },
2417 /* 04 */ { 0, &BX_CPU_C::BxError },
2418 /* 05 */ { 0, &BX_CPU_C::BxError },
2419 /* 06 */ { 0, &BX_CPU_C::BxError },
2420 /* 07 */ { 0, &BX_CPU_C::BxError },
2421 /* 08 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a08 },
2422 /* 09 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a09 },
2423 /* 0A */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0a },
2424 /* 0B */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0b },
2425 /* 0C */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0c },
2426 /* 0D */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0d },
2427 /* 0E */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0e },
2428 /* 0F */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a0f }
2431 static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a1x[16] = {
2432 /* 00 */ { 0, &BX_CPU_C::BxError },
2433 /* 01 */ { 0, &BX_CPU_C::BxError },
2434 /* 02 */ { 0, &BX_CPU_C::BxError },
2435 /* 03 */ { 0, &BX_CPU_C::BxError },
2436 /* 04 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a14 },
2437 /* 05 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a15 },
2438 /* 06 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a16 },
2439 /* 07 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a17 },
2440 /* 08 */ { 0, &BX_CPU_C::BxError },
2441 /* 09 */ { 0, &BX_CPU_C::BxError },
2442 /* 0A */ { 0, &BX_CPU_C::BxError },
2443 /* 0B */ { 0, &BX_CPU_C::BxError },
2444 /* 0C */ { 0, &BX_CPU_C::BxError },
2445 /* 0D */ { 0, &BX_CPU_C::BxError },
2446 /* 0E */ { 0, &BX_CPU_C::BxError },
2447 /* 0F */ { 0, &BX_CPU_C::BxError }
2450 static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a2x[16] = {
2451 /* 00 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a20 },
2452 /* 01 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a21 },
2453 /* 02 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a22 },
2454 /* 03 */ { 0, &BX_CPU_C::BxError },
2455 /* 04 */ { 0, &BX_CPU_C::BxError },
2456 /* 05 */ { 0, &BX_CPU_C::BxError },
2457 /* 06 */ { 0, &BX_CPU_C::BxError },
2458 /* 07 */ { 0, &BX_CPU_C::BxError },
2459 /* 08 */ { 0, &BX_CPU_C::BxError },
2460 /* 09 */ { 0, &BX_CPU_C::BxError },
2461 /* 0A */ { 0, &BX_CPU_C::BxError },
2462 /* 0B */ { 0, &BX_CPU_C::BxError },
2463 /* 0C */ { 0, &BX_CPU_C::BxError },
2464 /* 0D */ { 0, &BX_CPU_C::BxError },
2465 /* 0E */ { 0, &BX_CPU_C::BxError },
2466 /* 0F */ { 0, &BX_CPU_C::BxError }
2469 static const BxOpcodeInfo_t BxOpcode3ByteOp0f3a4x[16] = {
2470 /* 00 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a40 },
2471 /* 01 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a41 },
2472 /* 02 */ { BxImmediate_Ib | BxPrefixSSE, NULL, BxOpcodeGroupSSE_0f3a42 },
2473 /* 03 */ { 0, &BX_CPU_C::BxError },
2474 /* 04 */ { 0, &BX_CPU_C::BxError },
2475 /* 05 */ { 0, &BX_CPU_C::BxError },
2476 /* 06 */ { 0, &BX_CPU_C::BxError },
2477 /* 07 */ { 0, &BX_CPU_C::BxError },
2478 /* 08 */ { 0, &BX_CPU_C::BxError },
2479 /* 09 */ { 0, &BX_CPU_C::BxError },
2480 /* 0A */ { 0, &BX_CPU_C::BxError },
2481 /* 0B */ { 0, &BX_CPU_C::BxError },
2482 /* 0C */ { 0, &BX_CPU_C::BxError },
2483 /* 0D */ { 0, &BX_CPU_C::BxError },
2484 /* 0E */ { 0, &BX_CPU_C::BxError },
2485 /* 0F */ { 0, &BX_CPU_C::BxError }
2488 static const BxOpcodeInfo_t BxOpcode3ByteTableA5[16] = {
2489 /* 00 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a0x },
2490 /* 01 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a1x },
2491 /* 02 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a2x },
2492 /* 03 */ { 0, &BX_CPU_C::BxError },
2493 /* 04 */ { Bx3ByteOpIndex, NULL, BxOpcode3ByteOp0f3a4x },
2494 /* 05 */ { 0, &BX_CPU_C::BxError },
2495 /* 06 */ { 0, &BX_CPU_C::BxError },
2496 /* 07 */ { 0, &BX_CPU_C::BxError },
2497 /* 08 */ { 0, &BX_CPU_C::BxError },
2498 /* 09 */ { 0, &BX_CPU_C::BxError },
2499 /* 0A */ { 0, &BX_CPU_C::BxError },
2500 /* 0B */ { 0, &BX_CPU_C::BxError },
2501 /* 0C */ { 0, &BX_CPU_C::BxError },
2502 /* 0D */ { 0, &BX_CPU_C::BxError },
2503 /* 0E */ { 0, &BX_CPU_C::BxError },
2504 /* 0F */ { 0, &BX_CPU_C::BxError }
2507 #endif // BX_SUPPORT_SSE >= 4 || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
2509 #endif