VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-3-template.mac

Last change on this file was 106061, checked in by vboxsync, 3 days ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 115.0 KB
Line 
1; $Id: bs3-cpu-instr-3-template.mac 106061 2024-09-16 14:03:52Z vboxsync $
2;; @file
3; BS3Kit - bs3-cpu-instr-3 - MMX, SSE and AVX instructions, assembly template.
4;
5
6;
7; Copyright (C) 2007-2024 Oracle and/or its affiliates.
8;
9; This file is part of VirtualBox base platform packages, as
10; available from https://www.virtualbox.org.
11;
12; This program is free software; you can redistribute it and/or
13; modify it under the terms of the GNU General Public License
14; as published by the Free Software Foundation, in version 3 of the
15; License.
16;
17; This program is distributed in the hope that it will be useful, but
18; WITHOUT ANY WARRANTY; without even the implied warranty of
19; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20; General Public License for more details.
21;
22; You should have received a copy of the GNU General Public License
23; along with this program; if not, see <https://www.gnu.org/licenses>.
24;
25; The contents of this file may alternatively be used under the terms
26; of the Common Development and Distribution License Version 1.0
27; (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28; in the VirtualBox distribution, in which case the provisions of the
29; CDDL are applicable instead of those of the GPL.
30;
31; You may elect to license modified versions of this file under the
32; terms and conditions of either the GPL or the CDDL or both.
33;
34; SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35;
36
37
38;*********************************************************************************************************************************
39;* Header Files *
40;*********************************************************************************************************************************
41%include "bs3kit-template-header.mac" ; setup environment
42
43
44;*********************************************************************************************************************************
45;* External Symbols *
46;*********************************************************************************************************************************
47TMPL_BEGIN_TEXT
48
49
50;
51; Test code snippets containing code which differs between 16-bit, 32-bit
52; and 64-bit CPUs modes.
53;
54%ifdef BS3_INSTANTIATING_CMN
55
56
57;;
58; Variant on BS3_PROC_BEGIN_CMN w/ BS3_PBC_NEAR that prefixes the function
59; with an instruction length byte.
60;
61; ASSUMES the length is between the start of the function and the .again label.
62;
63 %ifndef BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED
64 %define BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED
65 %macro BS3CPUINSTR3_PROC_BEGIN_CMN 1
66 %define BS3CPUINSTR3_LABEL %1
67 align 8, db 0cch
68 db BS3_CMN_NM(%1).again - BS3_CMN_NM(%1)
69BS3_PROC_BEGIN_CMN %1, BS3_PBC_NEAR
70 %ifdef EMIT_FS_PREFIX
71 fs
72 %endif
73 %endmacro
74 %macro BS3CPUINSTR3_PROC_END_CMN 0
75 BS3_PROC_END_CMN BS3CPUINSTR3_LABEL
76 %undef BS3CPUINSTR3_LABEL
77 %endmacro
78 %endif ; !BS3CPUINSTR3_PROC_BEGIN_CMN_DEFINED
79
80;;
81; The EMIT_INSTR_PLUS_ICEBP macros is for creating a common function for and
82; named after a single instruction, followed by a looping ICEBP.
83;
84; This works like a prefix to the instruction invocation, only exception is that
85; instead of [fs:xBX] you write FSxBS as that's what is wanted in the name.
86;
87 %ifndef EMIT_INSTR_PLUS_ICEBP_DEFINED
88 %define EMIT_INSTR_PLUS_ICEBP_DEFINED
89
90 %macro EMIT_INSTR_PLUS_ICEBP 2
91BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _icebp
92 %define FSxBX [fs:xBX]
93 %1 %2
94 %undef FSxBX
95.again:
96 icebp
97 jmp .again
98BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _icebp
99 %endmacro
100
101 %macro EMIT_INSTR_PLUS_ICEBP 3
102BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
103 %define FSxBX [fs:xBX]
104 %1 %2, %3
105 %undef FSxBX
106.again:
107 icebp
108 jmp .again
109BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
110 %endmacro
111
112 %macro EMIT_INSTR_PLUS_ICEBP 4
113BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
114 %define FSxBX [fs:xBX]
115 %1 %2, %3, %4
116 %undef FSxBX
117.again:
118 icebp
119 jmp .again
120BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
121 %endmacro
122
123 %macro EMIT_INSTR_PLUS_ICEBP 5
124BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
125 %define FSxBX [fs:xBX]
126 %1 %2, %3, %4, %5
127 %undef FSxBX
128.again:
129 icebp
130 jmp .again
131BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
132 %endmacro
133
134 %macro EMIT_INSTR_PLUS_ICEBP_C64 2
135 %if TMPL_BITS == 64
136 EMIT_INSTR_PLUS_ICEBP %1, %2
137 %endif
138 %endmacro
139
140 %macro EMIT_INSTR_PLUS_ICEBP_C64 3
141 %if TMPL_BITS == 64
142 EMIT_INSTR_PLUS_ICEBP %1, %2, %3
143 %endif
144 %endmacro
145
146 %macro EMIT_INSTR_PLUS_ICEBP_C64 4
147 %if TMPL_BITS == 64
148 EMIT_INSTR_PLUS_ICEBP %1, %2, %3, %4
149 %endif
150 %endmacro
151
152 %macro EMIT_INSTR_PLUS_ICEBP_C64 5
153 %if TMPL_BITS == 64
154 EMIT_INSTR_PLUS_ICEBP %1, %2, %3, %4, %5
155 %endif
156 %endmacro
157
158 %endif ; !EMIT_INSTR_PLUS_ICEBP_DEFINED
159
160;;
161; Companion to EMIT_INSTR_PLUS_ICEBP for dealing stuff that the assmbler does
162; not want to emit.
163;
164; @param 1 The function name (omitting bs3CpuInstr3_ and _icebp).
165; @param 2+ The opcode bytes. FSxBX_PFX and FSxBX_MODRM are defined locally.
166;
167 %ifndef EMIT_INSTR_PLUS_ICEBP_BYTES_DEFINED
168 %define EMIT_INSTR_PLUS_ICEBP_BYTES_DEFINED
169
170 %macro EMIT_INSTR_PLUS_ICEBP_BYTES 2+
171BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _icebp
172 %define FSxBX_PFX 64h
173 %if TMPL_BITS == 16
174 %define FSxBX_MODRM 07h
175 %else
176 %define FSxBX_MODRM 03h
177 %endif
178 db %2
179 %undef FSxBX_MODRM
180 %undef FSxBX_PFX
181.again:
182 icebp
183 jmp .again
184BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _icebp
185 %endmacro
186 %endif ; !EMIT_INSTR_PLUS_ICEBP_BYTES_DEFINED
187
188
189
190%ifndef EMIT_TYPE1_INSTR_DEFINED
191 %define EMIT_TYPE1_INSTR_DEFINED
192
193 %macro EMIT_INSTR_PLUS_ICEBP_xBX 3
194EMIT_INSTR_PLUS_ICEBP %1, %2, %3
195EMIT_INSTR_PLUS_ICEBP %1, %2, FSxBX
196 %endmacro ; EMIT_INSTR_PLUS_ICEBP_xBX
197
198 %macro EMIT_INSTR_PLUS_ICEBP_xBX 4
199EMIT_INSTR_PLUS_ICEBP %1, %2, %3, %4
200EMIT_INSTR_PLUS_ICEBP %1, %2, %3, FSxBX
201 %endmacro ; EMIT_INSTR_PLUS_ICEBP_xBX
202
203 %macro EMIT_INSTR_PLUS_ICEBP_MMX 1
204EMIT_INSTR_PLUS_ICEBP_xBX %1, MM1, MM2
205 %endmacro ; EMIT_INSTR_PLUS_ICEBP_MMX
206
207 %macro EMIT_INSTR_PLUS_ICEBP_XMM 1
208EMIT_INSTR_PLUS_ICEBP_xBX %1, XMM1, XMM2
209 %endmacro ; EMIT_INSTR_PLUS_ICEBP_XMM
210
211 %macro EMIT_INSTR_PLUS_ICEBP_XMM_123 1
212EMIT_INSTR_PLUS_ICEBP_xBX %1, XMM1, XMM2, XMM3
213 %endmacro ; EMIT_INSTR_PLUS_ICEBP_XMM_123
214
215 %macro EMIT_INSTR_PLUS_ICEBP_XMM_89 1
216 %if TMPL_BITS == 64
217EMIT_INSTR_PLUS_ICEBP_xBX %1, XMM8, XMM9
218 %endif
219 %endmacro ; EMIT_INSTR_PLUS_ICEBP_XMM_89
220
221 %macro EMIT_INSTR_PLUS_ICEBP_XMM_98 1
222 %if TMPL_BITS == 64
223EMIT_INSTR_PLUS_ICEBP_xBX %1, XMM9, XMM8
224 %endif
225 %endmacro ; EMIT_INSTR_PLUS_ICEBP_XMM_98
226
227 %macro EMIT_INSTR_PLUS_ICEBP_XMM_890 1
228 %if TMPL_BITS == 64
229EMIT_INSTR_PLUS_ICEBP_xBX %1, XMM8, XMM9, XMM10
230 %endif
231 %endmacro ; EMIT_INSTR_PLUS_ICEBP_XMM_890
232
233 %macro EMIT_INSTR_PLUS_ICEBP_YMM 1
234EMIT_INSTR_PLUS_ICEBP_xBX %1, YMM1, YMM2
235 %endmacro ; EMIT_INSTR_PLUS_ICEBP_YMM
236
237 %macro EMIT_INSTR_PLUS_ICEBP_YMM_123 1
238EMIT_INSTR_PLUS_ICEBP_xBX %1, YMM1, YMM2, YMM3
239 %endmacro ; EMIT_INSTR_PLUS_ICEBP_YMM_123
240
241 %macro EMIT_INSTR_PLUS_ICEBP_YMM_890 1
242 %if TMPL_BITS == 64
243EMIT_INSTR_PLUS_ICEBP_xBX %1, YMM8, YMM9, YMM10
244 %endif
245 %endmacro ; EMIT_INSTR_PLUS_ICEBP_YMM_890
246
247 ;; @param 7 Indicates whether the 2nd and 3rd pair has MMX variants.
248 %macro EMIT_TYPE1_INSTR 7
249;
250; PXOR (SSE2) & VPXOR (AVX2)
251;
252EMIT_INSTR_PLUS_ICEBP_MMX %1
253EMIT_INSTR_PLUS_ICEBP_XMM %1
254
255EMIT_INSTR_PLUS_ICEBP %2, XMM1, XMM1, XMM2
256EMIT_INSTR_PLUS_ICEBP %2, XMM1, XMM1, FSxBX
257EMIT_INSTR_PLUS_ICEBP %2, YMM7, YMM2, YMM3
258EMIT_INSTR_PLUS_ICEBP %2, YMM7, YMM2, FSxBX
259
260
261;
262; XORPS (SSE2) & VXORPS (AVX)
263;
264 %if %7 != 0
265EMIT_INSTR_PLUS_ICEBP_MMX %3
266 %endif
267EMIT_INSTR_PLUS_ICEBP_XMM %3
268
269EMIT_INSTR_PLUS_ICEBP %4, XMM1, XMM1, XMM2
270EMIT_INSTR_PLUS_ICEBP %4, XMM1, XMM1, FSxBX
271EMIT_INSTR_PLUS_ICEBP %4, YMM1, YMM1, YMM2
272EMIT_INSTR_PLUS_ICEBP %4, YMM1, YMM1, FSxBX
273
274
275;
276; XORPD (SSE2) & VXORPD (AVX)
277;
278 %if %7 != 0
279EMIT_INSTR_PLUS_ICEBP_MMX %5
280 %endif
281EMIT_INSTR_PLUS_ICEBP_XMM %5
282
283EMIT_INSTR_PLUS_ICEBP %6, XMM2, XMM1, XMM0
284EMIT_INSTR_PLUS_ICEBP %6, XMM2, XMM1, FSxBX
285EMIT_INSTR_PLUS_ICEBP %6, YMM2, YMM1, YMM0
286EMIT_INSTR_PLUS_ICEBP %6, YMM2, YMM1, FSxBX
287EMIT_INSTR_PLUS_ICEBP_C64 %6, YMM10, YMM8, YMM15
288
289 %endmacro ; EMIT_TYPE1_INSTR
290
291 %macro EMIT_TYPE1_ONE_INSTR 3
292 %if %3 != 0
293EMIT_INSTR_PLUS_ICEBP_MMX %1
294 %endif
295EMIT_INSTR_PLUS_ICEBP_XMM %1
296
297EMIT_INSTR_PLUS_ICEBP %2, XMM2, XMM1, XMM0
298EMIT_INSTR_PLUS_ICEBP %2, XMM2, XMM1, FSxBX
299EMIT_INSTR_PLUS_ICEBP %2, YMM2, YMM1, YMM0
300EMIT_INSTR_PLUS_ICEBP %2, YMM2, YMM1, FSxBX
301EMIT_INSTR_PLUS_ICEBP_C64 %2, YMM10, YMM8, YMM15
302 %endmacro ; EMIT_TYPE1_ONE_INSTR
303
304%endif ; !EMIT_TYPE1_INSTR_DEFINED
305
306EMIT_TYPE1_INSTR pand, vpand, andps, vandps, andpd, vandpd, 0
307EMIT_TYPE1_INSTR pandn, vpandn, andnps, vandnps, andnpd, vandnpd, 0
308EMIT_TYPE1_INSTR por, vpor, orps, vorps, orpd, vorpd, 0
309EMIT_TYPE1_INSTR pxor, vpxor, xorps, vxorps, xorpd, vxorpd, 0
310
311EMIT_TYPE1_INSTR pcmpgtb, vpcmpgtb, pcmpgtw, vpcmpgtw, pcmpgtd, vpcmpgtd, 1
312EMIT_TYPE1_ONE_INSTR pcmpgtq, vpcmpgtq, 0
313EMIT_TYPE1_INSTR pcmpeqb, vpcmpeqb, pcmpeqw, vpcmpeqw, pcmpeqd, vpcmpeqd, 1
314EMIT_TYPE1_ONE_INSTR pcmpeqq, vpcmpeqq, 0
315
316EMIT_TYPE1_INSTR paddb, vpaddb, paddw, vpaddw, paddd, vpaddd, 1
317EMIT_TYPE1_ONE_INSTR paddq, vpaddq, 1
318
319EMIT_TYPE1_INSTR psubb, vpsubb, psubw, vpsubw, psubd, vpsubd, 1
320EMIT_TYPE1_ONE_INSTR psubq, vpsubq, 1
321
322
323;
324; Type 2 instructions. On the form: pxxxx sAX, [zy]mm0
325;
326%ifndef EMIT_TYPE2_ONE_INSTR_DEFINED
327 %define EMIT_TYPE2_ONE_INSTR_DEFINED
328 ;; @param 1 MMX/SSE instruction name
329 ;; @param 2 AVX instruction name
330 ;; @param 3 Whether to emit MMX function
331 ;; @param 4 The opcode byte. (assuming two byte / vex map 1)
332 %macro EMIT_TYPE2_ONE_INSTR 4
333 %if %3 != 0
334EMIT_INSTR_PLUS_ICEBP %1, EAX, MM2
335
336BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_qword_FSxBX_icebp
337 %if TMPL_BITS == 16
338 db 64h, 0fh, %4, 7 ; %1 eax, qword [fs:xBX]
339 %else
340 db 64h, 0fh, %4, 3 ; %1 eax, qword [fs:xBX]
341 %endif
342.again:
343 icebp
344 jmp .again
345BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_qword_FSxBX_icebp
346 %endif
347
348BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_XMM2_icebp
349 %1 eax, xmm2
350.again:
351 icebp
352 jmp .again
353BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_XMM2_icebp
354
355BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_dqword_FSxBX_icebp
356 %if TMPL_BITS == 16
357 db 64h, 66h, 0fh, %4, 7 ; %1 eax, dqword [fs:xBX]
358 %else
359 db 64h, 66h, 0fh, %4, 3 ; %1 eax, dqword [fs:xBX]
360 %endif
361.again:
362 icebp
363 jmp .again
364BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_dqword_FSxBX_icebp
365
366EMIT_INSTR_PLUS_ICEBP %2, EAX, XMM2
367
368BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_dqword_FSxBX_icebp
369 %if TMPL_BITS == 16
370 db 64h, 0c4h, 0e0h, 071h, %4, 7 ; %2 eax, dqword [fs:xBX]
371 %else
372 db 64h, 0c4h, 0e0h, 071h, %4, 3 ; %2 eax, dqword [fs:xBX]
373 %endif
374.again:
375 icebp
376 jmp .again
377BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_dqword_FSxBX_icebp
378
379EMIT_INSTR_PLUS_ICEBP %2, EAX, YMM2
380
381BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_qqword_FSxBX_icebp
382 %if TMPL_BITS == 16
383 db 64h, 0c4h, 0e0h, 075h, %4, 7 ; %2 eax, qqword [fs:xBX]
384 %else
385 db 64h, 0c4h, 0e0h, 075h, %4, 3 ; %2 eax, qqword [fs:xBX]
386 %endif
387.again:
388 icebp
389 jmp .again
390BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_qqword_FSxBX_icebp
391
392EMIT_INSTR_PLUS_ICEBP_C64 %2, RAX, YMM9
393 %endmacro ; EMIT_TYPE2_ONE_INSTR
394%endif ; !EMIT_TYPE2_ONE_INSTR_DEFINED
395
396EMIT_TYPE2_ONE_INSTR pmovmskb, vpmovmskb, 1, 0d7h
397
398;
399; [V]PMULLW
400;
401EMIT_INSTR_PLUS_ICEBP_MMX pmullw
402
403EMIT_INSTR_PLUS_ICEBP_XMM pmullw
404EMIT_INSTR_PLUS_ICEBP_XMM_89 pmullw
405
406EMIT_INSTR_PLUS_ICEBP vpmullw, XMM1, XMM1, XMM2
407EMIT_INSTR_PLUS_ICEBP vpmullw, XMM1, XMM1, FSxBX
408EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmullw
409
410EMIT_INSTR_PLUS_ICEBP vpmullw, YMM1, YMM1, YMM2
411EMIT_INSTR_PLUS_ICEBP vpmullw, YMM1, YMM1, FSxBX
412EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmullw
413
414;
415; [V]PMULLD
416;
417EMIT_INSTR_PLUS_ICEBP_XMM pmulld
418EMIT_INSTR_PLUS_ICEBP_XMM_89 pmulld
419
420EMIT_INSTR_PLUS_ICEBP vpmulld, XMM2, XMM1, XMM0
421EMIT_INSTR_PLUS_ICEBP vpmulld, XMM2, XMM1, FSxBX
422EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmulld
423
424EMIT_INSTR_PLUS_ICEBP vpmulld, YMM2, YMM1, YMM0
425EMIT_INSTR_PLUS_ICEBP vpmulld, YMM2, YMM1, FSxBX
426EMIT_INSTR_PLUS_ICEBP_C64 vpmulld, YMM10, YMM8, YMM15
427EMIT_INSTR_PLUS_ICEBP_C64 vpmulld, YMM10, YMM8, FSxBX
428
429;
430; [V]PMULHW
431;
432EMIT_INSTR_PLUS_ICEBP_MMX pmulhw
433
434EMIT_INSTR_PLUS_ICEBP_XMM pmulhw
435EMIT_INSTR_PLUS_ICEBP_XMM_89 pmulhw
436
437EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM1, XMM1, XMM2
438EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM1, XMM1, FSxBX
439EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmulhw
440
441EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM1, YMM1, YMM2
442EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM1, YMM1, FSxBX
443EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmulhw
444
445;
446; [V]PMULHUW
447;
448EMIT_INSTR_PLUS_ICEBP_MMX pmulhuw
449
450EMIT_INSTR_PLUS_ICEBP_XMM pmulhuw
451EMIT_INSTR_PLUS_ICEBP_XMM_89 pmulhuw
452
453EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM1, XMM1, XMM2
454EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM1, XMM1, FSxBX
455EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmulhuw
456
457EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM1, YMM1, YMM2
458EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM1, YMM1, FSxBX
459EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmulhuw
460
461;
462; [V]PSHUFB
463;
464EMIT_INSTR_PLUS_ICEBP_MMX pshufb
465
466EMIT_INSTR_PLUS_ICEBP_XMM pshufb
467EMIT_INSTR_PLUS_ICEBP_XMM_89 pshufb
468
469EMIT_INSTR_PLUS_ICEBP_XMM_123 vpshufb
470EMIT_INSTR_PLUS_ICEBP_XMM_890 vpshufb
471
472EMIT_INSTR_PLUS_ICEBP_YMM_123 vpshufb
473EMIT_INSTR_PLUS_ICEBP_YMM_890 vpshufb
474
475;
476; PSHUFW
477;
478EMIT_INSTR_PLUS_ICEBP pshufw, MM1, MM2, 0FFh ; FF = top src word in all destination words
479EMIT_INSTR_PLUS_ICEBP pshufw, MM1, FSxBX, 0FFh
480EMIT_INSTR_PLUS_ICEBP pshufw, MM1, MM2, 01Bh ; 1B = word swap (like bswap but for words)
481EMIT_INSTR_PLUS_ICEBP pshufw, MM1, FSxBX, 01Bh
482
483;
484; [V]PSHUFHW
485;
486EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, XMM2, 0FFh
487EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, FSxBX, 0FFh
488EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, XMM2, 01Bh
489EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, FSxBX, 01Bh
490
491EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, XMM2, 0FFh
492EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, FSxBX, 0FFh
493EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, XMM2, 01Bh
494EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, FSxBX, 01Bh
495
496EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, YMM2, 0FFh
497EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, FSxBX, 0FFh
498EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, YMM2, 01Bh
499EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, FSxBX, 01Bh
500
501EMIT_INSTR_PLUS_ICEBP_C64 vpshufhw, YMM12, YMM7, 0FFh
502EMIT_INSTR_PLUS_ICEBP_C64 vpshufhw, YMM9, YMM12, 01Bh
503
504;
505; [V]PSHUFLW
506;
507EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, XMM2, 0FFh
508EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, FSxBX, 0FFh
509EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, XMM2, 01Bh
510EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, FSxBX, 01Bh
511
512EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, XMM2, 0FFh
513EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, FSxBX, 0FFh
514EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, XMM2, 01Bh
515EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, FSxBX, 01Bh
516
517EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, YMM2, 0FFh
518EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, FSxBX, 0FFh
519EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, YMM2, 01Bh
520EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, FSxBX, 01Bh
521
522EMIT_INSTR_PLUS_ICEBP_C64 vpshuflw, YMM12, YMM7, 0FFh
523EMIT_INSTR_PLUS_ICEBP_C64 vpshuflw, YMM9, YMM12, 01Bh
524
525;
526; [V]PSHUFD
527;
528EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, XMM2, 0FFh
529EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, FSxBX, 0FFh
530EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, XMM2, 01Bh
531EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, FSxBX, 01Bh
532
533EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, XMM2, 0FFh
534EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, FSxBX, 0FFh
535EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, XMM2, 01Bh
536EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, FSxBX, 01Bh
537
538EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, YMM2, 0FFh
539EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, FSxBX, 0FFh
540EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, YMM2, 01Bh
541EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, FSxBX, 01Bh
542
543EMIT_INSTR_PLUS_ICEBP_C64 vpshufd, YMM12, YMM7, 0FFh
544EMIT_INSTR_PLUS_ICEBP_C64 vpshufd, YMM9, YMM12, 01Bh
545
546;
547; [V]PUNPCKHBW
548;
549EMIT_INSTR_PLUS_ICEBP_MMX punpckhbw
550
551EMIT_INSTR_PLUS_ICEBP_XMM punpckhbw
552EMIT_INSTR_PLUS_ICEBP_XMM_89 punpckhbw
553
554EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpckhbw
555EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpckhbw
556
557EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpckhbw
558EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpckhbw
559
560;
561; [V]PUNPCKHWD
562;
563EMIT_INSTR_PLUS_ICEBP_MMX punpckhwd
564
565EMIT_INSTR_PLUS_ICEBP_XMM punpckhwd
566EMIT_INSTR_PLUS_ICEBP_XMM_89 punpckhwd
567
568EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpckhwd
569EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpckhwd
570
571EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpckhwd
572EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpckhwd
573
574;
575; [V]PUNPCKHDQ
576;
577EMIT_INSTR_PLUS_ICEBP_MMX punpckhdq
578
579EMIT_INSTR_PLUS_ICEBP_XMM punpckhdq
580EMIT_INSTR_PLUS_ICEBP_XMM_89 punpckhdq
581
582EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpckhdq
583EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpckhdq
584
585EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpckhdq
586EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpckhdq
587
588;
589; [V]PUNPCKHQDQ (no MMX)
590;
591EMIT_INSTR_PLUS_ICEBP_XMM punpckhqdq
592EMIT_INSTR_PLUS_ICEBP_XMM_89 punpckhqdq
593
594EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpckhqdq
595EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpckhqdq
596
597EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpckhqdq
598EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpckhqdq
599
600;
601; [V]PUNPCKLBW
602;
603EMIT_INSTR_PLUS_ICEBP_MMX punpcklbw
604
605EMIT_INSTR_PLUS_ICEBP_XMM punpcklbw
606EMIT_INSTR_PLUS_ICEBP_XMM_89 punpcklbw
607
608EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpcklbw
609EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpcklbw
610
611EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpcklbw
612EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpcklbw
613
614;
615; [V]PUNPCKLWD
616;
617EMIT_INSTR_PLUS_ICEBP_MMX punpcklwd
618
619EMIT_INSTR_PLUS_ICEBP_XMM punpcklwd
620EMIT_INSTR_PLUS_ICEBP_XMM_89 punpcklwd
621
622EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpcklwd
623EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpcklwd
624
625EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpcklwd
626EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpcklwd
627
628;
629; [V]PUNPCKLDQ
630;
631EMIT_INSTR_PLUS_ICEBP_MMX punpckldq
632
633EMIT_INSTR_PLUS_ICEBP_XMM punpckldq
634EMIT_INSTR_PLUS_ICEBP_XMM_89 punpckldq
635
636EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpckldq
637EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpckldq
638
639EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpckldq
640EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpckldq
641
642;
643; [V]PUNPCKLQDQ (no MMX)
644;
645EMIT_INSTR_PLUS_ICEBP_XMM punpcklqdq
646EMIT_INSTR_PLUS_ICEBP_XMM_89 punpcklqdq
647
648EMIT_INSTR_PLUS_ICEBP_XMM_123 vpunpcklqdq
649EMIT_INSTR_PLUS_ICEBP_XMM_890 vpunpcklqdq
650
651EMIT_INSTR_PLUS_ICEBP_YMM_123 vpunpcklqdq
652EMIT_INSTR_PLUS_ICEBP_YMM_890 vpunpcklqdq
653
654;
655; [V]PACKSSWB
656;
657EMIT_INSTR_PLUS_ICEBP_MMX packsswb
658
659EMIT_INSTR_PLUS_ICEBP_XMM packsswb
660EMIT_INSTR_PLUS_ICEBP_XMM_89 packsswb
661
662EMIT_INSTR_PLUS_ICEBP_XMM_123 vpacksswb
663EMIT_INSTR_PLUS_ICEBP_XMM_890 vpacksswb
664
665EMIT_INSTR_PLUS_ICEBP_YMM_123 vpacksswb
666EMIT_INSTR_PLUS_ICEBP_YMM_890 vpacksswb
667
668;
669; [V]PACKSSWD
670;
671EMIT_INSTR_PLUS_ICEBP_MMX packssdw
672
673EMIT_INSTR_PLUS_ICEBP_XMM packssdw
674EMIT_INSTR_PLUS_ICEBP_XMM_89 packssdw
675
676EMIT_INSTR_PLUS_ICEBP_XMM_123 vpackssdw
677EMIT_INSTR_PLUS_ICEBP_XMM_890 vpackssdw
678
679EMIT_INSTR_PLUS_ICEBP_YMM_123 vpackssdw
680EMIT_INSTR_PLUS_ICEBP_YMM_890 vpackssdw
681
682;
683; [V]PACKUSWB
684;
685EMIT_INSTR_PLUS_ICEBP_MMX packuswb
686
687EMIT_INSTR_PLUS_ICEBP_XMM packuswb
688EMIT_INSTR_PLUS_ICEBP_XMM_89 packuswb
689
690EMIT_INSTR_PLUS_ICEBP_XMM_123 vpackuswb
691EMIT_INSTR_PLUS_ICEBP_XMM_890 vpackuswb
692
693EMIT_INSTR_PLUS_ICEBP_YMM_123 vpackuswb
694EMIT_INSTR_PLUS_ICEBP_YMM_890 vpackuswb
695
696;
697; [V]PACKUSWD (no MMX)
698;
699EMIT_INSTR_PLUS_ICEBP_XMM packusdw
700EMIT_INSTR_PLUS_ICEBP_XMM_89 packusdw
701
702EMIT_INSTR_PLUS_ICEBP_XMM_123 vpackusdw
703EMIT_INSTR_PLUS_ICEBP_XMM_890 vpackusdw
704
705EMIT_INSTR_PLUS_ICEBP_YMM_123 vpackusdw
706EMIT_INSTR_PLUS_ICEBP_YMM_890 vpackusdw
707
708;
709; [V]PMAXUB
710;
711EMIT_INSTR_PLUS_ICEBP_MMX pmaxub
712
713EMIT_INSTR_PLUS_ICEBP_XMM pmaxub
714EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxub
715
716EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxub
717EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxub
718
719EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxub
720EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxub
721
722;
723; [V]PMAXUW
724;
725EMIT_INSTR_PLUS_ICEBP_XMM pmaxuw
726EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxuw
727
728EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxuw
729EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxuw
730
731EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxuw
732EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxuw
733
734;
735; [V]PMAXUD
736;
737EMIT_INSTR_PLUS_ICEBP_XMM pmaxud
738EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxud
739
740EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxud
741EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxud
742
743EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxud
744EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxud
745
746;
747; [V]PMAXSB
748;
749EMIT_INSTR_PLUS_ICEBP_XMM pmaxsb
750EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxsb
751
752EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxsb
753EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxsb
754
755EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxsb
756EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxsb
757
758;
759; [V]PMAXSW
760;
761EMIT_INSTR_PLUS_ICEBP_MMX pmaxsw
762
763EMIT_INSTR_PLUS_ICEBP_XMM pmaxsw
764EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxsw
765
766EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxsw
767EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxsw
768
769EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxsw
770EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxsw
771
772;
773; [V]PMAXSD
774;
775EMIT_INSTR_PLUS_ICEBP_XMM pmaxsd
776EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaxsd
777
778EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaxsd
779EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaxsd
780
781EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaxsd
782EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaxsd
783
784;
785; [V]PMINUB
786;
787EMIT_INSTR_PLUS_ICEBP_MMX pminub
788
789EMIT_INSTR_PLUS_ICEBP_XMM pminub
790EMIT_INSTR_PLUS_ICEBP_XMM_89 pminub
791
792EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminub
793EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminub
794
795EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminub
796EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminub
797
798;
799; [V]PMINUW
800;
801EMIT_INSTR_PLUS_ICEBP_XMM pminuw
802EMIT_INSTR_PLUS_ICEBP_XMM_89 pminuw
803
804EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminuw
805EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminuw
806
807EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminuw
808EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminuw
809
810;
811; [V]PMINUD
812;
813EMIT_INSTR_PLUS_ICEBP_XMM pminud
814EMIT_INSTR_PLUS_ICEBP_XMM_89 pminud
815
816EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminud
817EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminud
818
819EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminud
820EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminud
821
822;
823; [V]PMINSB
824;
825EMIT_INSTR_PLUS_ICEBP_XMM pminsb
826EMIT_INSTR_PLUS_ICEBP_XMM_89 pminsb
827
828EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminsb
829EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminsb
830
831EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminsb
832EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminsb
833
834;
835; [V]PMINSW
836;
837EMIT_INSTR_PLUS_ICEBP_MMX pminsw
838
839EMIT_INSTR_PLUS_ICEBP_XMM pminsw
840EMIT_INSTR_PLUS_ICEBP_XMM_89 pminsw
841
842EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminsw
843EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminsw
844
845EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminsw
846EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminsw
847
848;
849; [V]PMINSD
850;
851EMIT_INSTR_PLUS_ICEBP_XMM pminsd
852EMIT_INSTR_PLUS_ICEBP_XMM_89 pminsd
853
854EMIT_INSTR_PLUS_ICEBP_XMM_123 vpminsd
855EMIT_INSTR_PLUS_ICEBP_XMM_890 vpminsd
856
857EMIT_INSTR_PLUS_ICEBP_YMM_123 vpminsd
858EMIT_INSTR_PLUS_ICEBP_YMM_890 vpminsd
859
860;
861; [V]MOVNTDQA
862;
863EMIT_INSTR_PLUS_ICEBP movntdqa, XMM1, FSxBX
864EMIT_INSTR_PLUS_ICEBP vmovntdqa, XMM1, FSxBX
865EMIT_INSTR_PLUS_ICEBP vmovntdqa, YMM1, FSxBX
866EMIT_INSTR_PLUS_ICEBP_C64 movntdqa, XMM10, FSxBX
867EMIT_INSTR_PLUS_ICEBP_C64 vmovntdqa, XMM11, FSxBX
868EMIT_INSTR_PLUS_ICEBP_C64 vmovntdqa, YMM12, FSxBX
869
870;
871; [V]MOVNTDQ
872;
873EMIT_INSTR_PLUS_ICEBP movntdq, FSxBX, XMM1
874EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, XMM1
875EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, YMM1
876EMIT_INSTR_PLUS_ICEBP_C64 movntdq, FSxBX, XMM10
877EMIT_INSTR_PLUS_ICEBP_C64 vmovntdq, FSxBX, XMM10
878EMIT_INSTR_PLUS_ICEBP_C64 vmovntdq, FSxBX, YMM10
879
880
881;
882; [V]MOVNTPS
883;
884EMIT_INSTR_PLUS_ICEBP movntps, FSxBX, XMM1
885EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, XMM1
886EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, YMM1
887EMIT_INSTR_PLUS_ICEBP_C64 movntps, FSxBX, XMM10
888EMIT_INSTR_PLUS_ICEBP_C64 vmovntps, FSxBX, XMM11
889EMIT_INSTR_PLUS_ICEBP_C64 vmovntps, FSxBX, YMM12
890
891;
892; [V]MOVNTPD
893;
894EMIT_INSTR_PLUS_ICEBP movntpd, FSxBX, XMM1
895EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, XMM1
896EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, YMM1
897EMIT_INSTR_PLUS_ICEBP_C64 movntpd, FSxBX, XMM10
898EMIT_INSTR_PLUS_ICEBP_C64 vmovntpd, FSxBX, XMM11
899EMIT_INSTR_PLUS_ICEBP_C64 vmovntpd, FSxBX, YMM12
900
901;
902; [V]MOVUPS - not testing the 2nd register variant.
903;
904EMIT_INSTR_PLUS_ICEBP_XMM movups
905EMIT_INSTR_PLUS_ICEBP movups, FSxBX, XMM1
906EMIT_INSTR_PLUS_ICEBP_XMM vmovups
907EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, XMM1
908EMIT_INSTR_PLUS_ICEBP_YMM vmovups
909EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, YMM1
910EMIT_INSTR_PLUS_ICEBP_C64 movups, XMM8, XMM12
911EMIT_INSTR_PLUS_ICEBP_C64 movups, XMM10, FSxBX
912EMIT_INSTR_PLUS_ICEBP_C64 movups, FSxBX, XMM10
913EMIT_INSTR_PLUS_ICEBP_C64 vmovups, XMM7, XMM14
914EMIT_INSTR_PLUS_ICEBP_C64 vmovups, XMM11, FSxBX
915EMIT_INSTR_PLUS_ICEBP_C64 vmovups, FSxBX, XMM11
916EMIT_INSTR_PLUS_ICEBP_C64 vmovups, YMM12, YMM8
917EMIT_INSTR_PLUS_ICEBP_C64 vmovups, YMM12, FSxBX
918EMIT_INSTR_PLUS_ICEBP_C64 vmovups, FSxBX, YMM12
919
920;
921; [V]MOVUPD - not testing the 2nd register variant.
922;
923EMIT_INSTR_PLUS_ICEBP_XMM movupd
924EMIT_INSTR_PLUS_ICEBP movupd, FSxBX, XMM1
925EMIT_INSTR_PLUS_ICEBP_XMM vmovupd
926EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, XMM1
927EMIT_INSTR_PLUS_ICEBP_YMM vmovupd
928EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, YMM1
929EMIT_INSTR_PLUS_ICEBP_C64 movupd, XMM8, XMM12
930EMIT_INSTR_PLUS_ICEBP_C64 movupd, XMM10, FSxBX
931EMIT_INSTR_PLUS_ICEBP_C64 movupd, FSxBX, XMM10
932EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, XMM7, XMM14
933EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, XMM11, FSxBX
934EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, FSxBX, XMM11
935EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, YMM12, YMM8
936EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, YMM12, FSxBX
937EMIT_INSTR_PLUS_ICEBP_C64 vmovupd, FSxBX, YMM12
938
939;
940; [V]MOVSS - not testing the 2nd register variant.
941;
942EMIT_INSTR_PLUS_ICEBP_XMM movss
943EMIT_INSTR_PLUS_ICEBP movss, FSxBX, XMM1
944EMIT_INSTR_PLUS_ICEBP_XMM vmovss
945EMIT_INSTR_PLUS_ICEBP vmovss, FSxBX, XMM1
946EMIT_INSTR_PLUS_ICEBP_C64 movss, XMM11, XMM8
947EMIT_INSTR_PLUS_ICEBP_C64 movss, XMM8, FSxBX
948EMIT_INSTR_PLUS_ICEBP_C64 movss, FSxBX, XMM11
949EMIT_INSTR_PLUS_ICEBP_C64 vmovss, XMM9, XMM10
950EMIT_INSTR_PLUS_ICEBP_C64 vmovss, XMM10, FSxBX
951EMIT_INSTR_PLUS_ICEBP_C64 vmovss, FSxBX, XMM9
952
953;
954; [V]MOVSD - not testing the 2nd register variant.
955;
956EMIT_INSTR_PLUS_ICEBP_XMM movsd
957EMIT_INSTR_PLUS_ICEBP movsd, FSxBX, XMM1
958EMIT_INSTR_PLUS_ICEBP_XMM vmovsd
959EMIT_INSTR_PLUS_ICEBP vmovsd, FSxBX, XMM1
960EMIT_INSTR_PLUS_ICEBP_C64 movsd, XMM11, XMM8
961EMIT_INSTR_PLUS_ICEBP_C64 movsd, XMM8, FSxBX
962EMIT_INSTR_PLUS_ICEBP_C64 movsd, FSxBX, XMM11
963EMIT_INSTR_PLUS_ICEBP_C64 vmovsd, XMM9, XMM10
964EMIT_INSTR_PLUS_ICEBP_C64 vmovsd, XMM10, FSxBX
965EMIT_INSTR_PLUS_ICEBP_C64 vmovsd, FSxBX, XMM9
966
967;
968; [V]MOVLPS
969;
970EMIT_INSTR_PLUS_ICEBP movlps, XMM1, FSxBX
971EMIT_INSTR_PLUS_ICEBP movlps, FSxBX, XMM1
972EMIT_INSTR_PLUS_ICEBP vmovlps, XMM1, XMM2, FSxBX
973EMIT_INSTR_PLUS_ICEBP vmovlps, FSxBX, XMM1
974EMIT_INSTR_PLUS_ICEBP_C64 movlps, XMM8, FSxBX
975EMIT_INSTR_PLUS_ICEBP_C64 movlps, FSxBX, XMM11
976EMIT_INSTR_PLUS_ICEBP_C64 vmovlps, XMM10, XMM14, FSxBX
977EMIT_INSTR_PLUS_ICEBP_C64 vmovlps, FSxBX, XMM9
978
979;
980; [V]MOVLPD
981;
982EMIT_INSTR_PLUS_ICEBP movlpd, XMM1, FSxBX
983EMIT_INSTR_PLUS_ICEBP movlpd, FSxBX, XMM1
984EMIT_INSTR_PLUS_ICEBP vmovlpd, XMM1, XMM2, FSxBX
985EMIT_INSTR_PLUS_ICEBP vmovlpd, FSxBX, XMM1
986EMIT_INSTR_PLUS_ICEBP_C64 movlpd, XMM8, FSxBX
987EMIT_INSTR_PLUS_ICEBP_C64 movlpd, FSxBX, XMM11
988EMIT_INSTR_PLUS_ICEBP_C64 vmovlpd, XMM10, XMM14, FSxBX
989EMIT_INSTR_PLUS_ICEBP_C64 vmovlpd, FSxBX, XMM9
990
991;
992; [V]MOVHPS
993;
994EMIT_INSTR_PLUS_ICEBP movhps, XMM1, FSxBX
995EMIT_INSTR_PLUS_ICEBP movhps, FSxBX, XMM1
996EMIT_INSTR_PLUS_ICEBP vmovhps, XMM1, XMM2, FSxBX
997EMIT_INSTR_PLUS_ICEBP vmovhps, FSxBX, XMM1
998EMIT_INSTR_PLUS_ICEBP_C64 movhps, XMM8, FSxBX
999EMIT_INSTR_PLUS_ICEBP_C64 movhps, FSxBX, XMM11
1000EMIT_INSTR_PLUS_ICEBP_C64 vmovhps, XMM10, XMM14, FSxBX
1001EMIT_INSTR_PLUS_ICEBP_C64 vmovhps, FSxBX, XMM9
1002
1003;
1004; [V]MOVHPD
1005;
1006EMIT_INSTR_PLUS_ICEBP movhpd, XMM1, FSxBX
1007EMIT_INSTR_PLUS_ICEBP movhpd, FSxBX, XMM1
1008EMIT_INSTR_PLUS_ICEBP vmovhpd, XMM1, XMM2, FSxBX
1009EMIT_INSTR_PLUS_ICEBP vmovhpd, FSxBX, XMM1
1010EMIT_INSTR_PLUS_ICEBP_C64 movhpd, XMM8, FSxBX
1011EMIT_INSTR_PLUS_ICEBP_C64 movhpd, FSxBX, XMM11
1012EMIT_INSTR_PLUS_ICEBP_C64 vmovhpd, XMM10, XMM14, FSxBX
1013EMIT_INSTR_PLUS_ICEBP_C64 vmovhpd, FSxBX, XMM9
1014
1015;
1016; [V]MOVHLPS
1017;
1018EMIT_INSTR_PLUS_ICEBP movhlps, XMM1, XMM2
1019EMIT_INSTR_PLUS_ICEBP vmovhlps, XMM1, XMM2, XMM3
1020EMIT_INSTR_PLUS_ICEBP_C64 movhlps, XMM8, XMM12
1021EMIT_INSTR_PLUS_ICEBP_C64 vmovhlps, XMM10, XMM14, XMM12
1022
1023;
1024; [V]MOVSLDUP
1025;
1026EMIT_INSTR_PLUS_ICEBP_XMM movsldup
1027EMIT_INSTR_PLUS_ICEBP_XMM vmovsldup
1028EMIT_INSTR_PLUS_ICEBP_YMM vmovsldup
1029EMIT_INSTR_PLUS_ICEBP_C64 movsldup, XMM8, XMM12
1030EMIT_INSTR_PLUS_ICEBP_C64 movsldup, XMM10, FSxBX
1031EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, XMM7, XMM14
1032EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, XMM11, FSxBX
1033EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, YMM12, YMM8
1034EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, YMM12, FSxBX
1035
1036;
1037; [V]MOVSHDUP
1038;
1039EMIT_INSTR_PLUS_ICEBP_XMM movshdup
1040EMIT_INSTR_PLUS_ICEBP_XMM vmovshdup
1041EMIT_INSTR_PLUS_ICEBP_YMM vmovshdup
1042EMIT_INSTR_PLUS_ICEBP_C64 movshdup, XMM8, XMM12
1043EMIT_INSTR_PLUS_ICEBP_C64 movshdup, XMM10, FSxBX
1044EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, XMM7, XMM14
1045EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, XMM11, FSxBX
1046EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, YMM12, YMM8
1047EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, YMM12, FSxBX
1048
1049;
1050; [V]MOVDDUP
1051;
1052EMIT_INSTR_PLUS_ICEBP_XMM movddup
1053EMIT_INSTR_PLUS_ICEBP_XMM vmovddup
1054EMIT_INSTR_PLUS_ICEBP_YMM vmovddup
1055EMIT_INSTR_PLUS_ICEBP_C64 movddup, XMM8, XMM12
1056EMIT_INSTR_PLUS_ICEBP_C64 movddup, XMM10, FSxBX
1057EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, XMM7, XMM14
1058EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, XMM11, FSxBX
1059EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, YMM12, YMM8
1060EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, YMM12, FSxBX
1061
1062;
1063; [V]MOVAPS
1064;
1065EMIT_INSTR_PLUS_ICEBP_XMM movaps
1066EMIT_INSTR_PLUS_ICEBP_XMM vmovaps
1067EMIT_INSTR_PLUS_ICEBP_YMM vmovaps
1068EMIT_INSTR_PLUS_ICEBP_C64 movaps, XMM8, XMM12
1069EMIT_INSTR_PLUS_ICEBP_C64 movaps, XMM10, FSxBX
1070EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, XMM7, XMM14
1071EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, XMM11, FSxBX
1072EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, YMM12, YMM8
1073EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, YMM12, FSxBX
1074
1075EMIT_INSTR_PLUS_ICEBP_XMM movapd
1076EMIT_INSTR_PLUS_ICEBP_XMM vmovapd
1077EMIT_INSTR_PLUS_ICEBP_YMM vmovapd
1078EMIT_INSTR_PLUS_ICEBP_C64 movapd, XMM8, XMM12
1079EMIT_INSTR_PLUS_ICEBP_C64 movapd, XMM10, FSxBX
1080EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, XMM7, XMM14
1081EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, XMM11, FSxBX
1082EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, YMM12, YMM8
1083EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, YMM12, FSxBX
1084
1085;
1086; [V]MOVD
1087;
1088EMIT_INSTR_PLUS_ICEBP movd, MM1, EDX
1089EMIT_INSTR_PLUS_ICEBP movd, MM1, FSxBX
1090EMIT_INSTR_PLUS_ICEBP movd, EAX, MM1
1091EMIT_INSTR_PLUS_ICEBP movd, FSxBX, MM1
1092EMIT_INSTR_PLUS_ICEBP_C64 movd, MM1, R9D
1093EMIT_INSTR_PLUS_ICEBP_C64 movd, R10D, MM0
1094
1095EMIT_INSTR_PLUS_ICEBP movd, XMM1, EAX
1096EMIT_INSTR_PLUS_ICEBP movd, XMM1, FSxBX
1097EMIT_INSTR_PLUS_ICEBP movd, FSxBX, XMM1
1098EMIT_INSTR_PLUS_ICEBP movd, EAX, XMM1
1099EMIT_INSTR_PLUS_ICEBP_C64 movd, XMM9, R8D
1100EMIT_INSTR_PLUS_ICEBP_C64 movd, R8D, XMM9
1101EMIT_INSTR_PLUS_ICEBP_C64 movd, XMM9, FSxBX
1102EMIT_INSTR_PLUS_ICEBP_C64 movd, FSxBX, XMM9
1103
1104EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, EAX
1105EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, FSxBX
1106EMIT_INSTR_PLUS_ICEBP vmovd, FSxBX, XMM1
1107EMIT_INSTR_PLUS_ICEBP vmovd, EDX, XMM1
1108EMIT_INSTR_PLUS_ICEBP_C64 vmovd, XMM9, R9D
1109EMIT_INSTR_PLUS_ICEBP_C64 vmovd, R8D, XMM9
1110EMIT_INSTR_PLUS_ICEBP_C64 vmovd, XMM9, FSxBX
1111EMIT_INSTR_PLUS_ICEBP_C64 vmovd, FSxBX, XMM9
1112
1113;
1114; [V]MOVQ - some hand coded stuff here as the assembler prefers the 7f/6f variants.
1115;
1116EMIT_INSTR_PLUS_ICEBP_MMX movq
1117EMIT_INSTR_PLUS_ICEBP movq, FSxBX, MM1
1118EMIT_INSTR_PLUS_ICEBP_C64 movq, R9, MM1
1119EMIT_INSTR_PLUS_ICEBP_C64 movq, MM1, R9
1120 %if TMPL_BITS == 64
1121EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_MM1_FSxBX, FSxBX_PFX, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1122EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_MM1, FSxBX_PFX, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1123 %endif
1124
1125EMIT_INSTR_PLUS_ICEBP_XMM movq
1126EMIT_INSTR_PLUS_ICEBP movq, FSxBX, XMM1
1127EMIT_INSTR_PLUS_ICEBP_C64 movq, XMM9, R8
1128EMIT_INSTR_PLUS_ICEBP_C64 movq, R8, XMM9
1129EMIT_INSTR_PLUS_ICEBP_C64 movq, XMM9, FSxBX
1130EMIT_INSTR_PLUS_ICEBP_C64 movq, FSxBX, XMM9
1131 %if TMPL_BITS == 64
1132EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM1_FSxBX, FSxBX_PFX, 66h, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1133EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM9_FSxBX, FSxBX_PFX, 66h, 4ch, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1134EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM1, FSxBX_PFX, 66h, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1135EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM9, FSxBX_PFX, 66h, 4ch, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1136 %endif
1137
1138EMIT_INSTR_PLUS_ICEBP_XMM vmovq
1139EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM1_FSxBX, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1140EMIT_INSTR_PLUS_ICEBP vmovq, FSxBX, XMM1
1141EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM1, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1142EMIT_INSTR_PLUS_ICEBP_C64 vmovq, XMM9, R8
1143EMIT_INSTR_PLUS_ICEBP_C64 vmovq, R8, XMM9
1144EMIT_INSTR_PLUS_ICEBP_C64 vmovq, XMM9, FSxBX
1145EMIT_INSTR_PLUS_ICEBP_C64 vmovq, FSxBX, XMM9
1146 %if TMPL_BITS == 64
1147EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM9_FSxBX, FSxBX_PFX, 0c4h, 061h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1148EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM9, FSxBX_PFX, 0c4h, 061h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1149 %endif
1150
1151;
1152; [V]MOVDQU - not testing the 2nd register variant.
1153;
1154EMIT_INSTR_PLUS_ICEBP_XMM movdqu
1155EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM1_XMM2, 0f3h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1156EMIT_INSTR_PLUS_ICEBP movdqu, FSxBX, XMM1
1157EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, XMM2 ; C5 FA 6F CA
1158EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_XMM1_XMM2, 0c5h, 0fah, 07fh, X86_MODRM_MAKE(3, 2, 1)
1159EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, FSxBX
1160EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM1
1161EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, YMM2 ; C5 FE 6F CA
1162EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_YMM1_YMM2, 0c5h, 0feh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1163EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, FSxBX
1164EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM1
1165EMIT_INSTR_PLUS_ICEBP_C64 movdqu, XMM8, XMM12 ; F3 45 0F 6F C4
1166 %if TMPL_BITS == 64
1167EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM8_XMM12, 0f3h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1168 %endif
1169EMIT_INSTR_PLUS_ICEBP_C64 movdqu, XMM10, FSxBX
1170EMIT_INSTR_PLUS_ICEBP_C64 movdqu, FSxBX, XMM10
1171EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, XMM7, XMM14
1172EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, XMM11, FSxBX
1173EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, FSxBX, XMM11
1174EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, YMM12, YMM8
1175EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, YMM12, FSxBX
1176EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, FSxBX, YMM12
1177
1178;
1179; [V]MOVDQA - not testing the 2nd register variant.
1180;
1181EMIT_INSTR_PLUS_ICEBP_XMM movdqa
1182EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM1_XMM2, 066h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1183EMIT_INSTR_PLUS_ICEBP movdqa, FSxBX, XMM1
1184EMIT_INSTR_PLUS_ICEBP_XMM vmovdqa
1185EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM1_XMM2, 0c5h, 0f9h, 07fh, X86_MODRM_MAKE(3, 2, 1)
1186EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM1
1187EMIT_INSTR_PLUS_ICEBP_YMM vmovdqa
1188EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM1_YMM2, 0c5h, 0fdh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1189EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM1
1190 %if TMPL_BITS == 64
1191EMIT_INSTR_PLUS_ICEBP_C64 movdqa, XMM8, XMM12 ; 66 45 0F 6F C4
1192EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM8_XMM12, 066h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1193EMIT_INSTR_PLUS_ICEBP_C64 movdqa, XMM10, FSxBX
1194EMIT_INSTR_PLUS_ICEBP_C64 movdqa, FSxBX, XMM10
1195EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, XMM8, XMM14 ; C4 C1 79 6F FE
1196EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM8_XMM14, 0c4h, 041h, 79h, 07fh, X86_MODRM_MAKE(3, 6, 0)
1197EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, XMM11, FSxBX
1198EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, FSxBX, XMM11
1199EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, YMM12, YMM8
1200EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM12_YMM8, 0c4h, 041h, 7dh, 07fh, X86_MODRM_MAKE(3, 0, 4)
1201EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, YMM12, FSxBX
1202EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, FSxBX, YMM12
1203 %endif
1204
1205;
1206; [V]PTEST
1207;
1208EMIT_INSTR_PLUS_ICEBP_XMM ptest
1209EMIT_INSTR_PLUS_ICEBP_XMM vptest
1210EMIT_INSTR_PLUS_ICEBP_YMM vptest
1211EMIT_INSTR_PLUS_ICEBP_XMM_98 ptest
1212EMIT_INSTR_PLUS_ICEBP_XMM_98 vptest
1213EMIT_INSTR_PLUS_ICEBP_C64 vptest, YMM9, YMM8
1214EMIT_INSTR_PLUS_ICEBP_C64 vptest, YMM9, FSxBX
1215
1216;
1217; [V]PAVGB
1218;
1219EMIT_INSTR_PLUS_ICEBP_MMX pavgb
1220
1221EMIT_INSTR_PLUS_ICEBP_XMM pavgb
1222EMIT_INSTR_PLUS_ICEBP_XMM_89 pavgb
1223
1224EMIT_INSTR_PLUS_ICEBP_XMM_123 vpavgb
1225EMIT_INSTR_PLUS_ICEBP_XMM_890 vpavgb
1226
1227EMIT_INSTR_PLUS_ICEBP_YMM_123 vpavgb
1228EMIT_INSTR_PLUS_ICEBP_YMM_890 vpavgb
1229
1230;
1231; [V]PAVGW
1232;
1233EMIT_INSTR_PLUS_ICEBP_MMX pavgw
1234
1235EMIT_INSTR_PLUS_ICEBP_XMM pavgw
1236EMIT_INSTR_PLUS_ICEBP_XMM_89 pavgw
1237
1238EMIT_INSTR_PLUS_ICEBP_XMM_123 vpavgw
1239EMIT_INSTR_PLUS_ICEBP_XMM_890 vpavgw
1240
1241EMIT_INSTR_PLUS_ICEBP_YMM_123 vpavgw
1242EMIT_INSTR_PLUS_ICEBP_YMM_890 vpavgw
1243
1244;
1245; [V]PSIGNB
1246;
1247EMIT_INSTR_PLUS_ICEBP_MMX psignb
1248
1249EMIT_INSTR_PLUS_ICEBP_XMM psignb
1250EMIT_INSTR_PLUS_ICEBP_XMM_89 psignb
1251
1252EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignb
1253EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignb
1254
1255EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignb
1256EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignb
1257
1258;
1259; [V]PSIGNW
1260;
1261EMIT_INSTR_PLUS_ICEBP_MMX psignw
1262
1263EMIT_INSTR_PLUS_ICEBP_XMM psignw
1264EMIT_INSTR_PLUS_ICEBP_XMM_89 psignw
1265
1266EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignw
1267EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignw
1268
1269EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignw
1270EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignw
1271
1272;
1273; [V]PSIGND
1274;
1275EMIT_INSTR_PLUS_ICEBP_MMX psignd
1276
1277EMIT_INSTR_PLUS_ICEBP_XMM psignd
1278EMIT_INSTR_PLUS_ICEBP_XMM_89 psignd
1279
1280EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignd
1281EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignd
1282
1283EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignd
1284EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignd
1285
1286;
1287; [V]ABSB
1288;
1289EMIT_INSTR_PLUS_ICEBP_MMX pabsb
1290EMIT_INSTR_PLUS_ICEBP_XMM pabsb
1291EMIT_INSTR_PLUS_ICEBP_XMM vpabsb
1292EMIT_INSTR_PLUS_ICEBP_YMM vpabsb
1293EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsb
1294EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsb
1295EMIT_INSTR_PLUS_ICEBP_C64 vpabsb, YMM9, YMM8
1296EMIT_INSTR_PLUS_ICEBP_C64 vpabsb, YMM9, FSxBX
1297
1298;
1299; [V]ABSW
1300;
1301EMIT_INSTR_PLUS_ICEBP_MMX pabsw
1302EMIT_INSTR_PLUS_ICEBP_XMM pabsw
1303EMIT_INSTR_PLUS_ICEBP_XMM vpabsw
1304EMIT_INSTR_PLUS_ICEBP_YMM vpabsw
1305EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsw
1306EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsw
1307EMIT_INSTR_PLUS_ICEBP_C64 vpabsw, YMM9, YMM8
1308EMIT_INSTR_PLUS_ICEBP_C64 vpabsw, YMM9, FSxBX
1309
1310;
1311; [V]ABSD
1312;
1313EMIT_INSTR_PLUS_ICEBP_MMX pabsd
1314EMIT_INSTR_PLUS_ICEBP_XMM pabsd
1315EMIT_INSTR_PLUS_ICEBP_XMM vpabsd
1316EMIT_INSTR_PLUS_ICEBP_YMM vpabsd
1317EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsd
1318EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsd
1319EMIT_INSTR_PLUS_ICEBP_C64 vpabsd, YMM9, YMM8
1320EMIT_INSTR_PLUS_ICEBP_C64 vpabsd, YMM9, FSxBX
1321
1322;
1323; [V]PHADDW
1324;
1325EMIT_INSTR_PLUS_ICEBP_MMX phaddw
1326EMIT_INSTR_PLUS_ICEBP_XMM phaddw
1327EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddw
1328EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddw
1329EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddw
1330EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddw
1331EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddw
1332
1333;
1334; [V]PHADDD
1335;
1336EMIT_INSTR_PLUS_ICEBP_MMX phaddd
1337EMIT_INSTR_PLUS_ICEBP_XMM phaddd
1338EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddd
1339EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddd
1340EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddd
1341EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddd
1342EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddd
1343
1344
1345;
1346; [V]PHSUBW
1347;
1348EMIT_INSTR_PLUS_ICEBP_MMX phsubw
1349EMIT_INSTR_PLUS_ICEBP_XMM phsubw
1350EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubw
1351EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubw
1352EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubw
1353EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubw
1354EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubw
1355
1356;
1357; [V]PHSUBD
1358;
1359EMIT_INSTR_PLUS_ICEBP_MMX phsubd
1360EMIT_INSTR_PLUS_ICEBP_XMM phsubd
1361EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubd
1362EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubd
1363EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubd
1364EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubd
1365EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubd
1366
1367;
1368; [V]PHADDSW
1369;
1370EMIT_INSTR_PLUS_ICEBP_MMX phaddsw
1371EMIT_INSTR_PLUS_ICEBP_XMM phaddsw
1372EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddsw
1373EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddsw
1374EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddsw
1375EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddsw
1376EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddsw
1377
1378;
1379; [V]PHSUBSW
1380;
1381EMIT_INSTR_PLUS_ICEBP_MMX phsubsw
1382EMIT_INSTR_PLUS_ICEBP_XMM phsubsw
1383EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubsw
1384EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubsw
1385EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubsw
1386EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubsw
1387EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubsw
1388
1389;
1390; [V]PMADDUBSW
1391;
1392EMIT_INSTR_PLUS_ICEBP_MMX pmaddubsw
1393EMIT_INSTR_PLUS_ICEBP_XMM pmaddubsw
1394EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaddubsw
1395EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaddubsw
1396EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaddubsw
1397EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaddubsw
1398EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaddubsw
1399
1400;
1401; [V]PMULHRSW
1402;
1403EMIT_INSTR_PLUS_ICEBP_MMX pmulhrsw
1404EMIT_INSTR_PLUS_ICEBP_XMM pmulhrsw
1405EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmulhrsw
1406EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmulhrsw
1407EMIT_INSTR_PLUS_ICEBP_XMM_89 pmulhrsw
1408EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmulhrsw
1409EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmulhrsw
1410
1411;
1412; [V]PSADBW
1413;
1414EMIT_INSTR_PLUS_ICEBP_MMX psadbw
1415EMIT_INSTR_PLUS_ICEBP_XMM psadbw
1416EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsadbw
1417EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsadbw
1418EMIT_INSTR_PLUS_ICEBP_XMM_89 psadbw
1419EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsadbw
1420EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsadbw
1421
1422;
1423; [V]PMULDQ
1424;
1425EMIT_INSTR_PLUS_ICEBP_XMM pmuldq
1426EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmuldq
1427EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmuldq
1428EMIT_INSTR_PLUS_ICEBP_XMM_89 pmuldq
1429EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmuldq
1430EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmuldq
1431
1432;
1433; [V]PMULUDQ
1434;
1435EMIT_INSTR_PLUS_ICEBP_MMX pmuludq
1436EMIT_INSTR_PLUS_ICEBP_XMM pmuludq
1437EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmuludq
1438EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmuludq
1439EMIT_INSTR_PLUS_ICEBP_XMM_89 pmuludq
1440EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmuludq
1441EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmuludq
1442
1443;
1444; [V]PUNPCKLPS
1445;
1446EMIT_INSTR_PLUS_ICEBP_XMM unpcklps
1447EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpcklps
1448EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpcklps
1449EMIT_INSTR_PLUS_ICEBP_XMM_89 unpcklps
1450EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpcklps
1451EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpcklps
1452
1453;
1454; [V]PUNPCKLPD
1455;
1456EMIT_INSTR_PLUS_ICEBP_XMM unpcklpd
1457EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpcklpd
1458EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpcklpd
1459EMIT_INSTR_PLUS_ICEBP_XMM_89 unpcklpd
1460EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpcklpd
1461EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpcklpd
1462
1463;
1464; [V]PUNPCKHPS
1465;
1466EMIT_INSTR_PLUS_ICEBP_XMM unpckhps
1467EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpckhps
1468EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpckhps
1469EMIT_INSTR_PLUS_ICEBP_XMM_89 unpckhps
1470EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpckhps
1471EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpckhps
1472
1473;
1474; [V]PUNPCKHPD
1475;
1476EMIT_INSTR_PLUS_ICEBP_XMM unpckhpd
1477EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpckhpd
1478EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpckhpd
1479EMIT_INSTR_PLUS_ICEBP_XMM_89 unpckhpd
1480EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpckhpd
1481EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpckhpd
1482
1483;
1484; [V]PMOVSXBW
1485;
1486EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbw
1487EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbw
1488EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, XMM2
1489EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, FSxBX
1490EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbw
1491EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbw
1492EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbw, YMM9, XMM8
1493EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbw, YMM9, FSxBX
1494
1495;
1496; [V]PMOVSXBD
1497;
1498EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbd
1499EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbd
1500EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, XMM2
1501EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, FSxBX
1502EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbd
1503EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbd
1504EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbd, YMM9, XMM8
1505EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbd, YMM9, FSxBX
1506
1507;
1508; [V]PMOVSXBQ
1509;
1510EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbq
1511EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbq
1512EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, XMM2
1513EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, FSxBX
1514EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbq
1515EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbq
1516EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbq, YMM9, XMM8
1517EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbq, YMM9, FSxBX
1518
1519;
1520; [V]PMOVSXWD
1521;
1522EMIT_INSTR_PLUS_ICEBP_XMM pmovsxwd
1523EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxwd
1524EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, XMM2
1525EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, FSxBX
1526EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxwd
1527EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxwd
1528EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwd, YMM9, XMM8
1529EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwd, YMM9, FSxBX
1530
1531;
1532; [V]PMOVSXWQ
1533;
1534EMIT_INSTR_PLUS_ICEBP_XMM pmovsxwq
1535EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxwq
1536EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, XMM2
1537EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, FSxBX
1538EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxwq
1539EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxwq
1540EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwq, YMM9, XMM8
1541EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwq, YMM9, FSxBX
1542
1543;
1544; [V]PMOVSXDQ
1545;
1546EMIT_INSTR_PLUS_ICEBP_XMM pmovsxdq
1547EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxdq
1548EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, XMM2
1549EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, FSxBX
1550EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxdq
1551EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxdq
1552EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxdq, YMM9, XMM8
1553EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxdq, YMM9, FSxBX
1554
1555;
1556; [V]PMOVZXBW
1557;
1558EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbw
1559EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbw
1560EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, XMM2
1561EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, FSxBX
1562EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbw
1563EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbw
1564EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbw, YMM9, XMM8
1565EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbw, YMM9, FSxBX
1566
1567;
1568; [V]PMOVZXBD
1569;
1570EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbd
1571EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbd
1572EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, XMM2
1573EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, FSxBX
1574EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbd
1575EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbd
1576EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbd, YMM9, XMM8
1577EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbd, YMM9, FSxBX
1578
1579;
1580; [V]PMOVZXBQ
1581;
1582EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbq
1583EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbq
1584EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, XMM2
1585EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, FSxBX
1586EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbq
1587EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbq
1588EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbq, YMM9, XMM8
1589EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbq, YMM9, FSxBX
1590
1591;
1592; [V]PMOVZXWD
1593;
1594EMIT_INSTR_PLUS_ICEBP_XMM pmovzxwd
1595EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxwd
1596EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, XMM2
1597EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, FSxBX
1598EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxwd
1599EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxwd
1600EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwd, YMM9, XMM8
1601EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwd, YMM9, FSxBX
1602
1603;
1604; [V]PMOVZXWQ
1605;
1606EMIT_INSTR_PLUS_ICEBP_XMM pmovzxwq
1607EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxwq
1608EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, XMM2
1609EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, FSxBX
1610EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxwq
1611EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxwq
1612EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwq, YMM9, XMM8
1613EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwq, YMM9, FSxBX
1614
1615;
1616; [V]PMOVZXDQ
1617;
1618EMIT_INSTR_PLUS_ICEBP_XMM pmovzxdq
1619EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxdq
1620EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, XMM2
1621EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, FSxBX
1622EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxdq
1623EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxdq
1624EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxdq, YMM9, XMM8
1625EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxdq, YMM9, FSxBX
1626
1627;
1628; [V]SHUFPS
1629;
1630EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 0FFh
1631EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 0FFh
1632EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 000h
1633EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 000h
1634
1635EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 0FFh
1636EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 0FFh
1637EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 000h
1638EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 000h
1639
1640EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 0FFh
1641EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 0FFh
1642EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 000h
1643EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 000h
1644
1645EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, XMM9, 0FFh
1646EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, FSxBX, 0FFh
1647EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, XMM9, 000h
1648EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, FSxBX, 000h
1649
1650EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, XMM10, 0FFh
1651EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, FSxBX, 0FFh
1652EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, XMM10, 000h
1653EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, FSxBX, 000h
1654
1655EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, YMM10, 0FFh
1656EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, FSxBX, 0FFh
1657EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, YMM10, 000h
1658EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, FSxBX, 000h
1659
1660;
1661; [V]SHUFPD
1662;
1663EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 0FFh
1664EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 0FFh
1665EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 000h
1666EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 000h
1667
1668EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 0FFh
1669EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 0FFh
1670EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 000h
1671EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 000h
1672
1673EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 0FFh
1674EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 0FFh
1675EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 000h
1676EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 000h
1677
1678EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, XMM9, 0FFh
1679EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, FSxBX, 0FFh
1680EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, XMM9, 000h
1681EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, FSxBX, 000h
1682
1683EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, XMM10, 0FFh
1684EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, FSxBX, 0FFh
1685EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, XMM10, 000h
1686EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, FSxBX, 000h
1687
1688EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, YMM10, 0FFh
1689EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, FSxBX, 0FFh
1690EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, YMM10, 000h
1691EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, FSxBX, 000h
1692
1693;
1694; [V]LDDQU
1695;
1696EMIT_INSTR_PLUS_ICEBP lddqu, XMM1, FSxBX
1697EMIT_INSTR_PLUS_ICEBP vlddqu, XMM1, FSxBX
1698EMIT_INSTR_PLUS_ICEBP vlddqu, YMM1, FSxBX
1699EMIT_INSTR_PLUS_ICEBP_C64 lddqu, XMM10, FSxBX
1700EMIT_INSTR_PLUS_ICEBP_C64 vlddqu, XMM11, FSxBX
1701EMIT_INSTR_PLUS_ICEBP_C64 vlddqu, YMM12, FSxBX
1702
1703;
1704; [V]PHMINPOSUW
1705;
1706EMIT_INSTR_PLUS_ICEBP_XMM phminposuw
1707EMIT_INSTR_PLUS_ICEBP_XMM vphminposuw
1708EMIT_INSTR_PLUS_ICEBP_XMM_98 phminposuw
1709EMIT_INSTR_PLUS_ICEBP_XMM_98 vphminposuw
1710
1711;
1712; VBROADCASTSS
1713;
1714EMIT_INSTR_PLUS_ICEBP_XMM vbroadcastss
1715EMIT_INSTR_PLUS_ICEBP vbroadcastss, YMM1, XMM2
1716EMIT_INSTR_PLUS_ICEBP vbroadcastss, YMM1, FSxBX
1717EMIT_INSTR_PLUS_ICEBP_XMM_98 vbroadcastss
1718EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastss, YMM9, XMM8
1719EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastss, YMM9, FSxBX
1720
1721;
1722; VBROADCASTSD
1723;
1724EMIT_INSTR_PLUS_ICEBP vbroadcastsd, YMM1, XMM2
1725EMIT_INSTR_PLUS_ICEBP vbroadcastsd, YMM1, FSxBX
1726EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastsd, YMM9, XMM8
1727EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastsd, YMM9, FSxBX
1728
1729;
1730; VBROADCASTF128
1731;
1732EMIT_INSTR_PLUS_ICEBP vbroadcastf128, YMM1, FSxBX
1733EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastf128, YMM9, FSxBX
1734
1735;
1736; VPBROADCASTB
1737;
1738EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastb
1739EMIT_INSTR_PLUS_ICEBP vpbroadcastb, YMM1, XMM2
1740EMIT_INSTR_PLUS_ICEBP vpbroadcastb, YMM1, FSxBX
1741EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastb
1742EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastb, YMM9, XMM8
1743EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastb, YMM9, FSxBX
1744
1745;
1746; VPBROADCASTW
1747;
1748EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastw
1749EMIT_INSTR_PLUS_ICEBP vpbroadcastw, YMM1, XMM2
1750EMIT_INSTR_PLUS_ICEBP vpbroadcastw, YMM1, FSxBX
1751EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastw
1752EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastw, YMM9, XMM8
1753EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastw, YMM9, FSxBX
1754
1755;
1756; VPBROADCASTD
1757;
1758EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastd
1759EMIT_INSTR_PLUS_ICEBP vpbroadcastd, YMM1, XMM2
1760EMIT_INSTR_PLUS_ICEBP vpbroadcastd, YMM1, FSxBX
1761EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastd
1762EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastd, YMM9, XMM8
1763EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastd, YMM9, FSxBX
1764
1765;
1766; VPBROADCASTQ
1767;
1768EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastq
1769EMIT_INSTR_PLUS_ICEBP vpbroadcastq, YMM1, XMM2
1770EMIT_INSTR_PLUS_ICEBP vpbroadcastq, YMM1, FSxBX
1771EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastq
1772EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastq, YMM9, XMM8
1773EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastq, YMM9, FSxBX
1774
1775;
1776; VPBROADCASTI128
1777;
1778EMIT_INSTR_PLUS_ICEBP vbroadcasti128, YMM1, FSxBX
1779EMIT_INSTR_PLUS_ICEBP_C64 vbroadcasti128, YMM9, FSxBX
1780
1781;
1782; VTESTPS
1783;
1784EMIT_INSTR_PLUS_ICEBP_XMM vtestps
1785EMIT_INSTR_PLUS_ICEBP_YMM vtestps
1786EMIT_INSTR_PLUS_ICEBP_XMM_98 vtestps
1787EMIT_INSTR_PLUS_ICEBP_C64 vtestps, YMM9, YMM8
1788EMIT_INSTR_PLUS_ICEBP_C64 vtestps, YMM9, FSxBX
1789
1790;
1791; VTESTPD
1792;
1793EMIT_INSTR_PLUS_ICEBP_XMM vtestpd
1794EMIT_INSTR_PLUS_ICEBP_YMM vtestpd
1795EMIT_INSTR_PLUS_ICEBP_XMM_98 vtestpd
1796EMIT_INSTR_PLUS_ICEBP_C64 vtestpd, YMM9, YMM8
1797EMIT_INSTR_PLUS_ICEBP_C64 vtestpd, YMM9, FSxBX
1798
1799;
1800; SHA1NEXTE
1801;
1802EMIT_INSTR_PLUS_ICEBP_XMM sha1nexte
1803EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1nexte
1804
1805;
1806; SHA1MSG1
1807;
1808EMIT_INSTR_PLUS_ICEBP_XMM sha1msg1
1809EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1msg1
1810
1811;
1812; SHA1MSG2
1813;
1814EMIT_INSTR_PLUS_ICEBP_XMM sha1msg2
1815EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1msg2
1816
1817;
1818; SHA256MSG1
1819;
1820EMIT_INSTR_PLUS_ICEBP_XMM sha256msg1
1821EMIT_INSTR_PLUS_ICEBP_XMM_98 sha256msg1
1822
1823;
1824; SHA256MSG2
1825;
1826EMIT_INSTR_PLUS_ICEBP_XMM sha256msg2
1827EMIT_INSTR_PLUS_ICEBP_XMM_98 sha256msg2
1828
1829;
1830; SHA1RNDS4
1831;
1832EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 000h
1833EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 000h
1834EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 001h
1835EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 001h
1836EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 002h
1837EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 002h
1838EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 003h
1839EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 003h
1840EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 000h
1841EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 000h
1842EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 001h
1843EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 001h
1844EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 002h
1845EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 002h
1846EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 003h
1847EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 003h
1848
1849;
1850; SHA256RNDS2 (xmm0 is implicit)
1851;
1852EMIT_INSTR_PLUS_ICEBP sha256rnds2, XMM1, XMM2, XMM0
1853EMIT_INSTR_PLUS_ICEBP sha256rnds2, XMM1, FSxBX, XMM0
1854EMIT_INSTR_PLUS_ICEBP_C64 sha256rnds2, XMM8, XMM9, XMM0
1855EMIT_INSTR_PLUS_ICEBP_C64 sha256rnds2, XMM8, FSxBX, XMM0
1856
1857;
1858; [V]PBLENDVB
1859;
1860EMIT_INSTR_PLUS_ICEBP_XMM pblendvb
1861EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, XMM3, XMM4
1862EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, FSxBX, XMM4
1863EMIT_INSTR_PLUS_ICEBP_XMM_89 pblendvb
1864EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, XMM8, XMM9, XMM10, XMM11
1865EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, XMM8, XMM9, FSxBX, XMM11
1866
1867EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, YMM3, YMM4
1868EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, FSxBX, YMM4
1869EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, YMM8, YMM9, YMM10, YMM11
1870EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, YMM8, YMM9, FSxBX, YMM11
1871
1872;
1873; [V]BLENDVPS
1874;
1875EMIT_INSTR_PLUS_ICEBP_XMM blendvps
1876EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, XMM3, XMM4
1877EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, FSxBX, XMM4
1878EMIT_INSTR_PLUS_ICEBP_XMM_89 blendvps
1879EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, XMM8, XMM9, XMM10, XMM11
1880EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, XMM8, XMM9, FSxBX, XMM11
1881
1882EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, YMM3, YMM4
1883EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, FSxBX, YMM4
1884EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, YMM8, YMM9, YMM10, YMM11
1885EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, YMM8, YMM9, FSxBX, YMM11
1886
1887;
1888; [V]BLENDVPD
1889;
1890EMIT_INSTR_PLUS_ICEBP_XMM blendvpd
1891EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, XMM3, XMM4
1892EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, FSxBX, XMM4
1893EMIT_INSTR_PLUS_ICEBP_XMM_89 blendvpd
1894EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, XMM8, XMM9, XMM10, XMM11
1895EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, XMM8, XMM9, FSxBX, XMM11
1896
1897EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, YMM3, YMM4
1898EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, FSxBX, YMM4
1899EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, YMM8, YMM9, YMM10, YMM11
1900EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, YMM8, YMM9, FSxBX, YMM11
1901
1902;
1903; [V]PALIGNR
1904;
1905EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 0FFh
1906EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 0FFh
1907EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 000h
1908EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 000h
1909EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 003h
1910EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 003h
1911EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 009h
1912EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 009h
1913
1914EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 0FFh
1915EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 0FFh
1916EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 000h
1917EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 000h
1918EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 003h
1919EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 003h
1920EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 013h
1921EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 013h
1922
1923EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 0FFh
1924EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 0FFh
1925EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 000h
1926EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 000h
1927EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 003h
1928EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 003h
1929EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 013h
1930EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 013h
1931
1932EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 0FFh
1933EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 0FFh
1934EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 000h
1935EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 000h
1936EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 003h
1937EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 003h
1938EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 013h
1939EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 013h
1940
1941EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 0FFh
1942EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 0FFh
1943EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 000h
1944EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 000h
1945EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 003h
1946EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 003h
1947EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 013h
1948EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 013h
1949
1950EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 0FFh
1951EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 0FFh
1952EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 000h
1953EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 000h
1954EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 003h
1955EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 003h
1956EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 013h
1957EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 013h
1958
1959EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 0FFh
1960EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 0FFh
1961EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 000h
1962EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 000h
1963EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 003h
1964EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 003h
1965EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 013h
1966EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 013h
1967
1968;
1969; [V]PBLENDW
1970;
1971EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 0FFh
1972EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 0FFh
1973EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 000h
1974EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 000h
1975EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 07Ah
1976EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 07Ah
1977
1978EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 0FFh
1979EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 0FFh
1980EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 000h
1981EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 000h
1982EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 07Ah
1983EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 07Ah
1984
1985EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 0FFh
1986EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 0FFh
1987EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 000h
1988EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 000h
1989EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 07Ah
1990EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 07Ah
1991
1992EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 0FFh
1993EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 0FFh
1994EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 000h
1995EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 000h
1996EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 07Ah
1997EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 07Ah
1998
1999EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 0FFh
2000EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 0FFh
2001EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 000h
2002EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 000h
2003EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 07Ah
2004EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 07Ah
2005
2006EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 0FFh
2007EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 0FFh
2008EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 000h
2009EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 000h
2010EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 07Ah
2011EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 07Ah
2012
2013;
2014; VPBLENDD
2015;
2016EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 0FFh
2017EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 0FFh
2018EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 000h
2019EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 000h
2020EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 07Ah
2021EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 07Ah
2022
2023EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 0FFh
2024EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 0FFh
2025EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 000h
2026EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 000h
2027EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 07Ah
2028EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 07Ah
2029
2030EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 0FFh
2031EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 0FFh
2032EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 000h
2033EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 000h
2034EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 07Ah
2035EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 07Ah
2036
2037EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 0FFh
2038EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 0FFh
2039EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 000h
2040EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 000h
2041EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 07Ah
2042EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 07Ah
2043
2044;
2045; [V]BLENDPS
2046;
2047EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 0FFh
2048EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 0FFh
2049EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 000h
2050EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 000h
2051EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 07Ah
2052EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 07Ah
2053
2054EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 0FFh
2055EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 0FFh
2056EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 000h
2057EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 000h
2058EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 07Ah
2059EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 07Ah
2060
2061EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 0FFh
2062EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 0FFh
2063EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 000h
2064EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 000h
2065EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 07Ah
2066EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 07Ah
2067
2068EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 0FFh
2069EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 0FFh
2070EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 000h
2071EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 000h
2072EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 07Ah
2073EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 07Ah
2074
2075EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 0FFh
2076EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 0FFh
2077EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 000h
2078EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 000h
2079EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 07Ah
2080EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 07Ah
2081
2082EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 0FFh
2083EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 0FFh
2084EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 000h
2085EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 000h
2086EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 07Ah
2087EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 07Ah
2088
2089;
2090; [V]BLENDPD
2091;
2092EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 0FFh
2093EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 0FFh
2094EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 000h
2095EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 000h
2096EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 006h
2097EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 006h
2098
2099EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 0FFh
2100EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 0FFh
2101EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 000h
2102EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 000h
2103EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 006h
2104EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 006h
2105
2106EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 0FFh
2107EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 0FFh
2108EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 000h
2109EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 000h
2110EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 006h
2111EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 006h
2112
2113EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 0FFh
2114EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 0FFh
2115EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 000h
2116EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 000h
2117EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 006h
2118EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 006h
2119
2120EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 0FFh
2121EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 0FFh
2122EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 000h
2123EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 000h
2124EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 006h
2125EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 006h
2126
2127EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 0FFh
2128EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 0FFh
2129EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 000h
2130EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 000h
2131EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 006h
2132EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 006h
2133
2134;
2135; [V]PCLMULQDQ
2136;
2137EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 0FFh
2138EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 0FFh
2139EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 000h
2140EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 000h
2141
2142EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 0FFh
2143EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 0FFh
2144EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 000h
2145EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 000h
2146
2147EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, XMM9, 0FFh
2148EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, FSxBX, 0FFh
2149EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, XMM9, 000h
2150EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, FSxBX, 000h
2151
2152EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, XMM10, 0FFh
2153EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, FSxBX, 0FFh
2154EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, XMM10, 000h
2155EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, FSxBX, 000h
2156
2157;
2158; [V]PINSRB
2159;
2160EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, EDX, 0FFh
2161EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, FSxBX, 0FFh
2162EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, EDX, 000h
2163EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, FSxBX, 000h
2164
2165EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, EDX, 0FFh
2166EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, FSxBX, 0FFh
2167EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, EDX, 000h
2168EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, FSxBX, 000h
2169
2170EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, R9D, 0FFh
2171EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, FSxBX, 0FFh
2172EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, R9D, 000h
2173EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, FSxBX, 000h
2174
2175EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, R9D, 0FFh
2176EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, FSxBX, 0FFh
2177EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, R9D, 000h
2178EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, FSxBX, 000h
2179
2180;
2181; [V]PINSRW
2182;
2183EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 0FFh
2184EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 0FFh
2185EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 000h
2186EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 000h
2187
2188EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 0FFh
2189EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 0FFh
2190EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 000h
2191EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 000h
2192
2193EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 0FFh
2194EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 0FFh
2195EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 000h
2196EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 000h
2197
2198EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, MM1, R9D, 0FFh
2199EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, MM1, R9D, 000h
2200
2201EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9D, 0FFh
2202EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, FSxBX, 0FFh
2203EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9D, 000h
2204EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, FSxBX, 000h
2205
2206EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM1, RDX, 0FFh
2207EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9, 0FFh
2208EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM1, RDX, 000h
2209EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9, 000h
2210
2211EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, R9D, 0FFh
2212EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, FSxBX, 0FFh
2213EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, R9D, 000h
2214EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, FSxBX, 000h
2215
2216;
2217; [V]PINSRD
2218;
2219EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, EDX, 0FFh
2220EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, FSxBX, 0FFh
2221EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, EDX, 000h
2222EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, FSxBX, 000h
2223
2224EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, EDX, 0FFh
2225EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, FSxBX, 0FFh
2226EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, EDX, 000h
2227EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, FSxBX, 000h
2228
2229EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, R9D, 0FFh
2230EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, FSxBX, 0FFh
2231EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, R9D, 000h
2232EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, FSxBX, 000h
2233
2234EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, R9D, 0FFh
2235EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, FSxBX, 0FFh
2236EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, R9D, 000h
2237EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, FSxBX, 000h
2238
2239;
2240; [V]PINSRQ
2241;
2242EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, RDX, 0FFh
2243EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, FSxBX, 0FFh
2244EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, RDX, 000h
2245EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, FSxBX, 000h
2246
2247EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, RDX, 0FFh
2248EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, FSxBX, 0FFh
2249EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, RDX, 000h
2250EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, FSxBX, 000h
2251
2252EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, R9, 0FFh
2253EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, FSxBX, 0FFh
2254EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, R9, 000h
2255EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, FSxBX, 000h
2256
2257EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, R9, 0FFh
2258EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, FSxBX, 0FFh
2259EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, R9, 000h
2260EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, FSxBX, 000h
2261
2262;
2263; [V]PEXTRB
2264;
2265EMIT_INSTR_PLUS_ICEBP pextrb, EDX, XMM1, 0FFh
2266EMIT_INSTR_PLUS_ICEBP pextrb, EDX, XMM1, 000h
2267EMIT_INSTR_PLUS_ICEBP pextrb, FSxBX, XMM1, 0FFh
2268EMIT_INSTR_PLUS_ICEBP pextrb, FSxBX, XMM1, 000h
2269
2270EMIT_INSTR_PLUS_ICEBP_C64 pextrb, R9D, XMM8, 0FFh
2271EMIT_INSTR_PLUS_ICEBP_C64 pextrb, R9D, XMM8, 000h
2272EMIT_INSTR_PLUS_ICEBP_C64 pextrb, FSxBX, XMM8, 0FFh
2273EMIT_INSTR_PLUS_ICEBP_C64 pextrb, FSxBX, XMM8, 000h
2274
2275EMIT_INSTR_PLUS_ICEBP vpextrb, EDX, XMM1, 0FFh
2276EMIT_INSTR_PLUS_ICEBP vpextrb, EDX, XMM1, 000h
2277EMIT_INSTR_PLUS_ICEBP vpextrb, FSxBX, XMM1, 0FFh
2278EMIT_INSTR_PLUS_ICEBP vpextrb, FSxBX, XMM1, 000h
2279
2280EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, R9D, XMM8, 0FFh
2281EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, R9D, XMM8, 000h
2282EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, FSxBX, XMM8, 0FFh
2283EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, FSxBX, XMM8, 000h
2284
2285%ifnmacro vpextrb_w1b_edx_xmm1 1
2286 ; special encoding to prove that VEX.W is effectively ignored everywhere and that VEX.B only matter in 64-bit code.
2287 %macro vpextrb_w1b_edx_xmm1 1
2288 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R
2289 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_W
2290 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
2291 %endmacro
2292
2293 ; invalid coding where VEX.L=1.
2294 %macro vpextrb_l1_edx_xmm1 1
2295 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R | X86_OP_VEX3_BYTE1_B
2296 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_L
2297 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
2298 %endmacro
2299%endif
2300EMIT_INSTR_PLUS_ICEBP vpextrb_w1b_edx_xmm1, 0FFh
2301EMIT_INSTR_PLUS_ICEBP vpextrb_l1_edx_xmm1, 0FFh
2302
2303;
2304; [V]PEXTRD
2305;
2306EMIT_INSTR_PLUS_ICEBP pextrd, EDX, XMM1, 0FFh
2307EMIT_INSTR_PLUS_ICEBP pextrd, EDX, XMM1, 000h
2308EMIT_INSTR_PLUS_ICEBP pextrd, FSxBX, XMM1, 0FFh
2309EMIT_INSTR_PLUS_ICEBP pextrd, FSxBX, XMM1, 000h
2310
2311EMIT_INSTR_PLUS_ICEBP_C64 pextrd, R9D, XMM8, 0FFh
2312EMIT_INSTR_PLUS_ICEBP_C64 pextrd, R9D, XMM8, 000h
2313EMIT_INSTR_PLUS_ICEBP_C64 pextrd, FSxBX, XMM8, 0FFh
2314EMIT_INSTR_PLUS_ICEBP_C64 pextrd, FSxBX, XMM8, 000h
2315
2316EMIT_INSTR_PLUS_ICEBP vpextrd, EDX, XMM1, 0FFh
2317EMIT_INSTR_PLUS_ICEBP vpextrd, EDX, XMM1, 000h
2318EMIT_INSTR_PLUS_ICEBP vpextrd, FSxBX, XMM1, 0FFh
2319EMIT_INSTR_PLUS_ICEBP vpextrd, FSxBX, XMM1, 000h
2320
2321EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, R9D, XMM8, 0FFh
2322EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, R9D, XMM8, 000h
2323EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, FSxBX, XMM8, 0FFh
2324EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, FSxBX, XMM8, 000h
2325;
2326; [V]PEXTRQ
2327;
2328EMIT_INSTR_PLUS_ICEBP_C64 pextrq, RDX, XMM1, 0FFh
2329EMIT_INSTR_PLUS_ICEBP_C64 pextrq, RDX, XMM1, 000h
2330EMIT_INSTR_PLUS_ICEBP_C64 pextrq, R9, XMM8, 0FFh
2331EMIT_INSTR_PLUS_ICEBP_C64 pextrq, R9, XMM8, 000h
2332EMIT_INSTR_PLUS_ICEBP_C64 pextrq, FSxBX, XMM8, 0FFh
2333EMIT_INSTR_PLUS_ICEBP_C64 pextrq, FSxBX, XMM8, 000h
2334
2335EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, RDX, XMM1, 0FFh
2336EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, RDX, XMM1, 000h
2337EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, R9, XMM8, 0FFh
2338EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, R9, XMM8, 000h
2339EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, FSxBX, XMM8, 0FFh
2340EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, FSxBX, XMM8, 000h
2341
2342;
2343; [V]PEXTRW
2344;
2345EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 0FFh
2346EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 000h
2347
2348EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 0FFh
2349EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 000h
2350EMIT_INSTR_PLUS_ICEBP pextrw, FSxBX, XMM1, 0FFh
2351EMIT_INSTR_PLUS_ICEBP pextrw, FSxBX, XMM1, 000h
2352
2353EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, MM1, 0FFh
2354EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, MM1, 000h
2355
2356EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, XMM8, 0FFh
2357EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, XMM8, 000h
2358EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9, XMM8, 0FFh
2359EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9, XMM8, 000h
2360EMIT_INSTR_PLUS_ICEBP_C64 pextrw, FSxBX, XMM8, 0FFh
2361EMIT_INSTR_PLUS_ICEBP_C64 pextrw, FSxBX, XMM8, 000h
2362
2363EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 0FFh
2364EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 000h
2365EMIT_INSTR_PLUS_ICEBP vpextrw, FSxBX, XMM1, 000h
2366EMIT_INSTR_PLUS_ICEBP vpextrw, FSxBX, XMM1, 0FFh
2367
2368EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, R9D, XMM8, 0FFh
2369EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, R9D, XMM8, 000h
2370
2371EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, RDX, XMM1, 0FFh
2372EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, RDX, XMM1, 000h
2373EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, FSxBX, XMM8, 000h
2374EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, FSxBX, XMM8, 0FFh
2375
2376;
2377; [v]pextrw alternate encodings (SSE4.1 & AVX 0f3a variants)
2378;
2379; These default to 0f38 / VEX map 1 entry 0c5h in the assembler, this exercises
2380; the 0f3a / VEX map 3 entry 15h variants.
2381;
2382%ifndef EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2383 %define EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2384 ;; @param 1 imm8 byte
2385 %macro EMIT_V_PEXTRW_ALT_INSTR 1
2386BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2387 db 66h, 0fh, 3ah, 15h, 0cah, %1 ; pextrw [alt] edx, xmm1, %1
2388.again:
2389 icebp
2390 jmp .again
2391BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2392
2393BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2394 db 0c4h, 0e3h, 79h, 15h, 0cah, %1 ; vpextrw [alt] edx, xmm1, %1
2395.again:
2396 icebp
2397 jmp .again
2398BS3_PROC_END_CMN bs3CpuInstr3_vpextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2399
2400 %if TMPL_BITS == 64
2401BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_R9D_XMM8_ %+ %1 %+ _icebp
2402 db 66h, 45h, 0fh, 3ah, 15h, 0c1h, %1 ; pextrw [alt] r9d, xmm8, %1
2403.again:
2404 icebp
2405 jmp .again
2406BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_R9D_XMM8_ %+ %1 %+ _icebp
2407
2408BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_RDX_XMM1_ %+ %1 %+ _icebp
2409 db 66h, 48h, 0fh, 3ah, 15h, 0cah, %1 ; pextrw [alt] rdx, xmm1, %1
2410.again:
2411 icebp
2412 jmp .again
2413BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_RDX_XMM1_ %+ %1 %+ _icebp
2414
2415BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_R9_XMM8_ %+ %1 %+ _icebp
2416 db 66h, 4dh, 0fh, 3ah, 15h, 0c1h, %1 ; pextrw [alt] r9, xmm8, %1
2417.again:
2418 icebp
2419 jmp .again
2420BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_R9_XMM8_ %+ %1 %+ _icebp
2421 %endif
2422
2423 %endmacro ; EMIT_V_PEXTRW_ALT_INSTR
2424%endif ; !EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2425
2426EMIT_V_PEXTRW_ALT_INSTR 000h
2427EMIT_V_PEXTRW_ALT_INSTR 0FFh
2428
2429;
2430; vgather / vpgather instructions
2431;
2432%ifndef EMIT_VGATHER_INSTR_DEFINED
2433 %define EMIT_VGATHER_INSTR_DEFINED
2434
2435 ;; @param 1 instruction name
2436 ;; @param 2 destination register
2437 ;; @param 3 base register
2438 ;; @param 4 base register offset
2439 ;; @param 5 vector register
2440 ;; @param 6 vector register scale factor
2441 ;; @param 7 mask register
2442 %macro EMIT_ONE_VGATHER_INSTR 7
2443BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _plus_ %+ %4 %+ _plus_ %+ %5 %+ _x_ %+ %6 %+ _ %+ %7 %+ _icebp
2444 fs
2445 %1 %2, [%3 + %4 + %5 * %6], %7
2446.again:
2447 icebp
2448 jmp .again
2449BS3CPUINSTR3_PROC_END_CMN
2450 %endmacro ; EMIT_ONE_VGATHER_INSTR
2451 %macro EMIT_NEG_VGATHER_INSTR 7
2452BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _less_ %+ %4 %+ _plus_ %+ %5 %+ _x_ %+ %6 %+ _ %+ %7 %+ _icebp
2453 fs
2454 %1 %2, [%3 - %4 + %5 * %6], %7
2455.again:
2456 icebp
2457 jmp .again
2458BS3CPUINSTR3_PROC_END_CMN
2459 %endmacro ; EMIT_NEG_VGATHER_INSTR
2460
2461 ;; @param 1 instruction name
2462 ;; @param 2 'xmm' or 'ymm': type of destination register
2463 ;; @param 3 'xmm' or 'ymm': type of vector register
2464 ;; @param 4 'xmm' or 'ymm': type of mask register
2465 %macro EMIT_VGATHER_INSTR_BLOCK 4
2466 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 0, %3 %+ 0, 1, %4 %+ 2 ;; UD: dest == index: v?gather?? ?mm0, [ebx+0+1*?mm0], ?mm2
2467 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 0, %3 %+ 1, 1, %4 %+ 0 ;; UD: dest == mask: v?gather?? ?mm0, [ebx+0+1*?mm1], ?mm0
2468 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 0, %3 %+ 1, 1, %4 %+ 1 ;; UD: index == mask: v?gather?? ?mm0, [ebx+0+1*?mm1], ?mm1
2469 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 0, %3 %+ 1, 1, %4 %+ 2 ;; baseline: v?gather?? ?mm0, [ebx+0+1*?mm1], ?mm2
2470 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 2, %3 %+ 1, 1, %4 %+ 2 ;; offset8: v?gather?? ?mm0, [ebx+2+1*?mm1], ?mm2
2471 EMIT_NEG_VGATHER_INSTR %1, %2 %+ 0, ebx, 2, %3 %+ 1, 1, %4 %+ 2 ;; -offset8: v?gather?? ?mm0, [ebx-2+1*?mm1], ?mm2
2472 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 153, %3 %+ 1, 1, %4 %+ 2 ;; offset32: v?gather?? ?mm0, [ebx+153+1*?mm1], ?mm2
2473 EMIT_NEG_VGATHER_INSTR %1, %2 %+ 0, ebx, 153, %3 %+ 1, 1, %4 %+ 2 ;; -offset32: v?gather?? ?mm0, [ebx-153+1*?mm1], ?mm2
2474 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, ebx, 0, %3 %+ 1, 2, %4 %+ 2 ;; scale: v?gather?? ?mm0, [ebx+0+2*?mm1], ?mm2
2475 %if TMPL_BITS == 64
2476 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, rbx, 0, %3 %+ 1, 1, %4 %+ 2 ;; 64-bit base reg: v?gather?? ?mm0, [rbx+0+1*?mm1], ?mm2
2477 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 8, r8d, 0, %3 %+ 9, 1, %4 %+ 10 ;; 64-bit-only regs: v?gather?? ?mm8, [r8d+0+1*?mm9], ?mm10
2478 %endif
2479 %endmacro ; EMIT_VGATHER_INSTR_BLOCK
2480
2481 ;; @param 1 instruction name
2482 ;; @param 2 'xmm' or 'ymm': type of destination register for 256-bit variants
2483 ;; @param 3 'xmm' or 'ymm': type of vector register for 256-bit variants
2484 ;; @param 4 'xmm' or 'ymm': type of mask register for 256-bit variants
2485 %macro EMIT_VGATHER_INSTR_BLOCKS 4
2486 EMIT_VGATHER_INSTR_BLOCK %1, xmm, xmm, xmm
2487 EMIT_VGATHER_INSTR_BLOCK %1, %2, %3, %4
2488 %endmacro ; EMIT_VGATHER_INSTR_BLOCKS
2489
2490%endif ; !EMIT_VGATHER_INSTR_DEFINED
2491
2492EMIT_VGATHER_INSTR_BLOCKS vgatherdps, ymm, ymm, ymm
2493EMIT_VGATHER_INSTR_BLOCKS vgatherqps, xmm, ymm, xmm
2494EMIT_VGATHER_INSTR_BLOCKS vgatherdpd, ymm, xmm, ymm
2495EMIT_VGATHER_INSTR_BLOCKS vgatherqpd, ymm, ymm, ymm
2496
2497EMIT_VGATHER_INSTR_BLOCKS vpgatherdd, ymm, ymm, ymm
2498EMIT_VGATHER_INSTR_BLOCKS vpgatherqd, xmm, ymm, xmm
2499EMIT_VGATHER_INSTR_BLOCKS vpgatherdq, ymm, xmm, ymm
2500EMIT_VGATHER_INSTR_BLOCKS vpgatherqq, ymm, ymm, ymm
2501
2502;
2503; [V]MOVMSKPS
2504;
2505EMIT_INSTR_PLUS_ICEBP movmskps, EDX, XMM1
2506EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, XMM1
2507EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, YMM1
2508
2509EMIT_INSTR_PLUS_ICEBP_C64 movmskps, R9D, XMM8
2510EMIT_INSTR_PLUS_ICEBP_C64 movmskps, RDX, XMM1
2511
2512EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, R9D, XMM8
2513EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, RDX, XMM1
2514
2515EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, R9D, YMM8
2516EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, RDX, YMM1
2517
2518;
2519; [V]MOVMSKPD
2520;
2521EMIT_INSTR_PLUS_ICEBP movmskpd, EDX, XMM1
2522EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, XMM1
2523EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, YMM1
2524
2525EMIT_INSTR_PLUS_ICEBP_C64 movmskpd, R9D, XMM8
2526EMIT_INSTR_PLUS_ICEBP_C64 movmskpd, RDX, XMM1
2527
2528EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, R9D, XMM8
2529EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, RDX, XMM1
2530
2531EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, R9D, YMM8
2532EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, RDX, YMM1
2533
2534;
2535; [V]MPSADBW
2536;
2537EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, XMM2, 0FFh
2538EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, FSxBX, 0FFh
2539EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, XMM2, 000h
2540EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, FSxBX, 000h
2541
2542EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, XMM3, 0FFh
2543EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, FSxBX, 0FFh
2544EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, XMM3, 000h
2545EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, FSxBX, 000h
2546
2547EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, YMM3, 0FFh
2548EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, FSxBX, 0FFh
2549EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, YMM3, 000h
2550EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, FSxBX, 000h
2551
2552EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, XMM9, 0FFh
2553EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, FSxBX, 0FFh
2554EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, XMM9, 000h
2555EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, FSxBX, 000h
2556
2557EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, XMM10, 0FFh
2558EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, FSxBX, 0FFh
2559EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, XMM10, 000h
2560EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, FSxBX, 000h
2561
2562EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, YMM10, 0FFh
2563EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, FSxBX, 0FFh
2564EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, YMM10, 000h
2565EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, FSxBX, 000h
2566
2567;
2568; VINSERTI128
2569;
2570EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 0FFh
2571EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 0FFh
2572EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 000h
2573EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 000h
2574
2575EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, XMM10, 0FFh
2576EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, FSxBX, 0FFh
2577EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, XMM10, 000h
2578EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, FSxBX, 000h
2579
2580;
2581; VINSERTF128
2582;
2583EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 0FFh
2584EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 0FFh
2585EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 000h
2586EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 000h
2587
2588EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, XMM10, 0FFh
2589EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, FSxBX, 0FFh
2590EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, XMM10, 000h
2591EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, FSxBX, 000h
2592
2593;
2594; [V]INSERTPS
2595;
2596EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 000h
2597EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 0D5h
2598EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 028h
2599EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 0FFh
2600EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 000h
2601EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 0D5h
2602EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 028h
2603EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 0FFh
2604
2605EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 000h
2606EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 0D5h
2607EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 028h
2608EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 0FFh
2609EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 000h
2610EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 0D5h
2611EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 028h
2612EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 0FFh
2613
2614EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 000h
2615EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 0D5h
2616EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 028h
2617EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 0FFh
2618EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 000h
2619EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 0D5h
2620EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 028h
2621EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 0FFh
2622
2623EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 000h
2624EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 0D5h
2625EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 028h
2626EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 0FFh
2627EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 000h
2628EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 0D5h
2629EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 028h
2630EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 0FFh
2631
2632;
2633; VEXTRACTI128
2634;
2635EMIT_INSTR_PLUS_ICEBP vextracti128, XMM1, YMM2, 0FFh
2636EMIT_INSTR_PLUS_ICEBP vextracti128, FSxBX, YMM2, 0FFh
2637EMIT_INSTR_PLUS_ICEBP vextracti128, XMM1, YMM2, 000h
2638EMIT_INSTR_PLUS_ICEBP vextracti128, FSxBX, YMM2, 000h
2639
2640EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, XMM8, YMM9, 0FFh
2641EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, FSxBX, YMM9, 0FFh
2642EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, XMM8, YMM9, 000h
2643EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, FSxBX, YMM9, 000h
2644
2645;
2646; VEXTRACTF128
2647;
2648EMIT_INSTR_PLUS_ICEBP vextractf128, XMM1, YMM2, 0FFh
2649EMIT_INSTR_PLUS_ICEBP vextractf128, FSxBX, YMM2, 0FFh
2650EMIT_INSTR_PLUS_ICEBP vextractf128, XMM1, YMM2, 000h
2651EMIT_INSTR_PLUS_ICEBP vextractf128, FSxBX, YMM2, 000h
2652
2653EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, XMM8, YMM9, 0FFh
2654EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, FSxBX, YMM9, 0FFh
2655EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, XMM8, YMM9, 000h
2656EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, FSxBX, YMM9, 000h
2657
2658;
2659; [V]EXTRACTPS
2660;
2661EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 000h
2662EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 001h
2663EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 002h
2664EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 003h
2665EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 032h
2666EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 0FFh
2667EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 000h
2668EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 001h
2669EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 002h
2670EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 003h
2671EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 032h
2672EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 0FFh
2673
2674EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 000h
2675EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 001h
2676EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 002h
2677EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 003h
2678EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 032h
2679EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 0FFh
2680EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 000h
2681EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 001h
2682EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 002h
2683EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 003h
2684EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 032h
2685EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 0FFh
2686
2687EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 000h
2688EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 001h
2689EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 002h
2690EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 003h
2691EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 032h
2692EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 0FFh
2693EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 000h
2694EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 001h
2695EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 002h
2696EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 003h
2697EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 032h
2698EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 0FFh
2699
2700EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 000h
2701EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 001h
2702EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 002h
2703EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 003h
2704EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 032h
2705EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 0FFh
2706EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 000h
2707EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 001h
2708EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 002h
2709EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 003h
2710EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 032h
2711EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 0FFh
2712
2713;
2714; [V]PSUBSB
2715;
2716EMIT_INSTR_PLUS_ICEBP_MMX psubsb
2717EMIT_INSTR_PLUS_ICEBP_XMM psubsb
2718EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubsb
2719EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubsb
2720EMIT_INSTR_PLUS_ICEBP_XMM_89 psubsb
2721EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubsb
2722EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubsb
2723
2724;
2725; [V]PSUBSW
2726;
2727EMIT_INSTR_PLUS_ICEBP_MMX psubsw
2728EMIT_INSTR_PLUS_ICEBP_XMM psubsw
2729EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubsw
2730EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubsw
2731EMIT_INSTR_PLUS_ICEBP_XMM_89 psubsw
2732EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubsw
2733EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubsw
2734
2735;
2736; [V]PSUBUSB
2737;
2738EMIT_INSTR_PLUS_ICEBP_MMX psubusb
2739EMIT_INSTR_PLUS_ICEBP_XMM psubusb
2740EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubusb
2741EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubusb
2742EMIT_INSTR_PLUS_ICEBP_XMM_89 psubusb
2743EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubusb
2744EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubusb
2745
2746;
2747; [V]PSUBUSW
2748;
2749EMIT_INSTR_PLUS_ICEBP_MMX psubusw
2750EMIT_INSTR_PLUS_ICEBP_XMM psubusw
2751EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubusw
2752EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubusw
2753EMIT_INSTR_PLUS_ICEBP_XMM_89 psubusw
2754EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubusw
2755EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubusw
2756
2757;
2758; [V]PADDUSB
2759;
2760EMIT_INSTR_PLUS_ICEBP_MMX paddusb
2761EMIT_INSTR_PLUS_ICEBP_XMM paddusb
2762EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddusb
2763EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddusb
2764EMIT_INSTR_PLUS_ICEBP_XMM_89 paddusb
2765EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddusb
2766EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddusb
2767
2768;
2769; [V]PADDUSW
2770;
2771EMIT_INSTR_PLUS_ICEBP_MMX paddusw
2772EMIT_INSTR_PLUS_ICEBP_XMM paddusw
2773EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddusw
2774EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddusw
2775EMIT_INSTR_PLUS_ICEBP_XMM_89 paddusw
2776EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddusw
2777EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddusw
2778
2779;
2780; [V]PADDSB
2781;
2782EMIT_INSTR_PLUS_ICEBP_MMX paddsb
2783EMIT_INSTR_PLUS_ICEBP_XMM paddsb
2784EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddsb
2785EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddsb
2786EMIT_INSTR_PLUS_ICEBP_XMM_89 paddsb
2787EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddsb
2788EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddsb
2789
2790;
2791; [V]PADDSW
2792;
2793EMIT_INSTR_PLUS_ICEBP_MMX paddsw
2794EMIT_INSTR_PLUS_ICEBP_XMM paddsw
2795EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddsw
2796EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddsw
2797EMIT_INSTR_PLUS_ICEBP_XMM_89 paddsw
2798EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddsw
2799EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddsw
2800
2801;
2802; [V]PSLLW
2803;
2804EMIT_INSTR_PLUS_ICEBP_MMX psllw
2805EMIT_INSTR_PLUS_ICEBP psllw, MM1, 001h
2806EMIT_INSTR_PLUS_ICEBP psllw, MM1, 012h
2807EMIT_INSTR_PLUS_ICEBP_XMM psllw
2808EMIT_INSTR_PLUS_ICEBP psllw, XMM1, 001h
2809EMIT_INSTR_PLUS_ICEBP psllw, XMM1, 012h
2810EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllw
2811EMIT_INSTR_PLUS_ICEBP vpsllw, XMM1, XMM2, 001h
2812EMIT_INSTR_PLUS_ICEBP vpsllw, XMM1, XMM2, 012h
2813EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, XMM3
2814EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, FSxBX
2815EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, 001h
2816EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, 012h
2817EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllw
2818EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, XMM8, XMM9, 001h
2819EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, XMM8, XMM9, 012h
2820EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, XMM10
2821EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, FSxBX
2822EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, 001h
2823EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, 012h
2824
2825;
2826; [V]PSLLD
2827;
2828EMIT_INSTR_PLUS_ICEBP_MMX pslld
2829EMIT_INSTR_PLUS_ICEBP pslld, MM1, 001h
2830EMIT_INSTR_PLUS_ICEBP pslld, MM1, 012h
2831EMIT_INSTR_PLUS_ICEBP pslld, MM1, 021h
2832EMIT_INSTR_PLUS_ICEBP_XMM pslld
2833EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 001h
2834EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 012h
2835EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 021h
2836EMIT_INSTR_PLUS_ICEBP_XMM_123 vpslld
2837EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 001h
2838EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 012h
2839EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 021h
2840EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, XMM3
2841EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, FSxBX
2842EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 001h
2843EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 012h
2844EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 021h
2845EMIT_INSTR_PLUS_ICEBP_XMM_890 vpslld
2846EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 001h
2847EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 012h
2848EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 021h
2849EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, XMM10
2850EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, FSxBX
2851EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 001h
2852EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 012h
2853EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 021h
2854
2855;
2856; [V]PSLLQ
2857;
2858EMIT_INSTR_PLUS_ICEBP_MMX psllq
2859EMIT_INSTR_PLUS_ICEBP psllq, MM1, 001h
2860EMIT_INSTR_PLUS_ICEBP psllq, MM1, 012h
2861EMIT_INSTR_PLUS_ICEBP psllq, MM1, 045h
2862EMIT_INSTR_PLUS_ICEBP_XMM psllq
2863EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 001h
2864EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 012h
2865EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 045h
2866EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllq
2867EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 001h
2868EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 012h
2869EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 045h
2870EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, XMM3
2871EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, FSxBX
2872EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 001h
2873EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 012h
2874EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 045h
2875EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllq
2876EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 001h
2877EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 012h
2878EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 045h
2879EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, XMM10
2880EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, FSxBX
2881EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 001h
2882EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 012h
2883EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 045h
2884
2885;
2886; [V]PSRAW
2887;
2888EMIT_INSTR_PLUS_ICEBP_MMX psraw
2889EMIT_INSTR_PLUS_ICEBP psraw, MM1, 001h
2890EMIT_INSTR_PLUS_ICEBP psraw, MM1, 012h
2891EMIT_INSTR_PLUS_ICEBP_XMM psraw
2892EMIT_INSTR_PLUS_ICEBP psraw, XMM1, 001h
2893EMIT_INSTR_PLUS_ICEBP psraw, XMM1, 012h
2894EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsraw
2895EMIT_INSTR_PLUS_ICEBP vpsraw, XMM1, XMM2, 001h
2896EMIT_INSTR_PLUS_ICEBP vpsraw, XMM1, XMM2, 012h
2897EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, XMM3
2898EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, FSxBX
2899EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, 001h
2900EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, 012h
2901EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsraw
2902EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, XMM8, XMM9, 001h
2903EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, XMM8, XMM9, 012h
2904EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, XMM10
2905EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, FSxBX
2906EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, 001h
2907EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, 012h
2908
2909;
2910; [V]PSRAD
2911;
2912EMIT_INSTR_PLUS_ICEBP_MMX psrad
2913EMIT_INSTR_PLUS_ICEBP psrad, MM1, 001h
2914EMIT_INSTR_PLUS_ICEBP psrad, MM1, 012h
2915EMIT_INSTR_PLUS_ICEBP psrad, MM1, 021h
2916EMIT_INSTR_PLUS_ICEBP_XMM psrad
2917EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 001h
2918EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 012h
2919EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 021h
2920EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrad
2921EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 001h
2922EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 012h
2923EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 021h
2924EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, XMM3
2925EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, FSxBX
2926EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 001h
2927EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 012h
2928EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 021h
2929EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrad
2930EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 001h
2931EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 012h
2932EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 021h
2933EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, XMM10
2934EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, FSxBX
2935EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 001h
2936EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 012h
2937EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 021h
2938
2939;
2940; no VPSRAQ -- does not exist until AVX512
2941;
2942
2943;
2944; [V]PSRLW
2945;
2946EMIT_INSTR_PLUS_ICEBP_MMX psrlw
2947EMIT_INSTR_PLUS_ICEBP psrlw, MM1, 001h
2948EMIT_INSTR_PLUS_ICEBP psrlw, MM1, 012h
2949EMIT_INSTR_PLUS_ICEBP_XMM psrlw
2950EMIT_INSTR_PLUS_ICEBP psrlw, XMM1, 001h
2951EMIT_INSTR_PLUS_ICEBP psrlw, XMM1, 012h
2952EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlw
2953EMIT_INSTR_PLUS_ICEBP vpsrlw, XMM1, XMM2, 001h
2954EMIT_INSTR_PLUS_ICEBP vpsrlw, XMM1, XMM2, 012h
2955EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, XMM3
2956EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, FSxBX
2957EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, 001h
2958EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, 012h
2959EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlw
2960EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, XMM8, XMM9, 001h
2961EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, XMM8, XMM9, 012h
2962EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, XMM10
2963EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, FSxBX
2964EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, 001h
2965EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, 012h
2966
2967;
2968; [V]PSRLD
2969;
2970EMIT_INSTR_PLUS_ICEBP_MMX psrld
2971EMIT_INSTR_PLUS_ICEBP psrld, MM1, 001h
2972EMIT_INSTR_PLUS_ICEBP psrld, MM1, 012h
2973EMIT_INSTR_PLUS_ICEBP psrld, MM1, 021h
2974EMIT_INSTR_PLUS_ICEBP_XMM psrld
2975EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 001h
2976EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 012h
2977EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 021h
2978EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrld
2979EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 001h
2980EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 012h
2981EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 021h
2982EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, XMM3
2983EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, FSxBX
2984EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 001h
2985EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 012h
2986EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 021h
2987EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrld
2988EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 001h
2989EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 012h
2990EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 021h
2991EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, XMM10
2992EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, FSxBX
2993EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 001h
2994EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 012h
2995EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 021h
2996
2997;
2998; [V]PSRLQ
2999;
3000EMIT_INSTR_PLUS_ICEBP_MMX psrlq
3001EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 001h
3002EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 012h
3003EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 045h
3004EMIT_INSTR_PLUS_ICEBP_XMM psrlq
3005EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 001h
3006EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 012h
3007EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 045h
3008EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlq
3009EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 001h
3010EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 012h
3011EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 045h
3012EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, XMM3
3013EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, FSxBX
3014EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 001h
3015EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 012h
3016EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 045h
3017EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlq
3018EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 001h
3019EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 012h
3020EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 045h
3021EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, XMM10
3022EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, FSxBX
3023EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 001h
3024EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 012h
3025EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 045h
3026
3027;
3028; VPSRLVD
3029;
3030EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlvd
3031EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsrlvd
3032EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlvd
3033EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsrlvd
3034
3035;
3036; VPSRLVQ
3037;
3038EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlvq
3039EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsrlvq
3040EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlvq
3041EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsrlvq
3042
3043;
3044; VPSRAVD
3045;
3046EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsravd
3047EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsravd
3048EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsravd
3049EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsravd
3050
3051;
3052; VPSLLVD
3053;
3054EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllvd
3055EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsllvd
3056EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllvd
3057EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsllvd
3058
3059;
3060; VPSLLVQ
3061;
3062EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllvq
3063EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsllvq
3064EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllvq
3065EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsllvq
3066
3067;
3068; [V]PSLLDQ
3069;
3070EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 000h
3071EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 005h
3072EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 012h
3073EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 000h
3074EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 005h
3075EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 012h
3076EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 000h
3077EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 005h
3078EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 012h
3079EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 000h
3080EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 005h
3081EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 012h
3082EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 000h
3083EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 005h
3084EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 012h
3085EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 000h
3086EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 005h
3087EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 012h
3088
3089;
3090; [V]PSRLDQ
3091;
3092EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 000h
3093EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 005h
3094EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 012h
3095EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 000h
3096EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 005h
3097EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 012h
3098EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 000h
3099EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 005h
3100EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 012h
3101EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 000h
3102EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 005h
3103EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 012h
3104EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 000h
3105EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 005h
3106EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 012h
3107EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 000h
3108EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 005h
3109EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 012h
3110
3111;
3112; VPERM2I128
3113;
3114EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 0FFh
3115EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 0FFh
3116EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 000h
3117EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 000h
3118EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 001h
3119EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 001h
3120EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 002h
3121EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 002h
3122EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 003h
3123EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 003h
3124EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 008h
3125EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 008h
3126EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 010h
3127EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 010h
3128EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 020h
3129EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 020h
3130EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 030h
3131EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 030h
3132EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 080h
3133EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 080h
3134EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 0FFh
3135EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 0FFh
3136EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 000h
3137EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 000h
3138EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 001h
3139EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 001h
3140EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 002h
3141EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 002h
3142EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 003h
3143EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 003h
3144EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 008h
3145EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 008h
3146EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 010h
3147EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 010h
3148EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 020h
3149EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 020h
3150EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 030h
3151EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 030h
3152EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 080h
3153EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 080h
3154
3155;
3156; VPERM2F128
3157;
3158EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 0FFh
3159EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 0FFh
3160EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 000h
3161EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 000h
3162EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 001h
3163EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 001h
3164EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 002h
3165EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 002h
3166EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 003h
3167EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 003h
3168EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 008h
3169EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 008h
3170EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 010h
3171EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 010h
3172EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 020h
3173EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 020h
3174EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 030h
3175EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 030h
3176EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 080h
3177EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 080h
3178EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 0FFh
3179EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 0FFh
3180EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 000h
3181EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 000h
3182EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 001h
3183EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 001h
3184EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 002h
3185EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 002h
3186EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 003h
3187EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 003h
3188EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 008h
3189EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 008h
3190EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 010h
3191EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 010h
3192EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 020h
3193EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 020h
3194EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 030h
3195EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 030h
3196EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 080h
3197EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 080h
3198
3199;
3200; VPERMILPS
3201;
3202EMIT_INSTR_PLUS_ICEBP_XMM_123 vpermilps
3203EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 000h
3204EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 01Bh
3205EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 0E4h
3206EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 03Dh
3207EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 000h
3208EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 01Bh
3209EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 0E4h
3210EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 03Dh
3211EMIT_INSTR_PLUS_ICEBP_YMM_123 vpermilps
3212EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 000h
3213EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 01Bh
3214EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 0E4h
3215EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 03Dh
3216EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 000h
3217EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 01Bh
3218EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 0E4h
3219EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 03Dh
3220EMIT_INSTR_PLUS_ICEBP_XMM_890 vpermilps
3221EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 000h
3222EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 01Bh
3223EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 0E4h
3224EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 03Dh
3225EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 000h
3226EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 01Bh
3227EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 0E4h
3228EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 03Dh
3229EMIT_INSTR_PLUS_ICEBP_YMM_890 vpermilps
3230EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 000h
3231EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 01Bh
3232EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 0E4h
3233EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 03Dh
3234EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 000h
3235EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 01Bh
3236EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 0E4h
3237EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 03Dh
3238
3239;
3240; VPERMILPD
3241;
3242EMIT_INSTR_PLUS_ICEBP_XMM_123 vpermilpd
3243EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 000h
3244EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 0E7h
3245EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 091h
3246EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 000h
3247EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 0E7h
3248EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 091h
3249EMIT_INSTR_PLUS_ICEBP_YMM_123 vpermilpd
3250EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 000h
3251EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 0E7h
3252EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 091h
3253EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 000h
3254EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 0E7h
3255EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 091h
3256EMIT_INSTR_PLUS_ICEBP_XMM_890 vpermilpd
3257EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 000h
3258EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 0E7h
3259EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 091h
3260EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 000h
3261EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 0E7h
3262EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 091h
3263EMIT_INSTR_PLUS_ICEBP_YMM_890 vpermilpd
3264EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 000h
3265EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 0E7h
3266EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 091h
3267EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 000h
3268EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 0E7h
3269EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 091h
3270
3271;
3272; [V]PMADDUBSW
3273;
3274EMIT_INSTR_PLUS_ICEBP_MMX pmaddwd
3275EMIT_INSTR_PLUS_ICEBP_XMM pmaddwd
3276EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaddwd
3277EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaddwd
3278EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaddwd
3279EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaddwd
3280EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaddwd
3281
3282;
3283; MASKMOVQ
3284;
3285%define EMIT_FS_PREFIX
3286EMIT_INSTR_PLUS_ICEBP maskmovq, MM0, MM1
3287%undef EMIT_FS_PREFIX
3288
3289;
3290; [V]MASKMOVDQU
3291;
3292%define EMIT_FS_PREFIX
3293EMIT_INSTR_PLUS_ICEBP maskmovdqu, XMM0, XMM1
3294EMIT_INSTR_PLUS_ICEBP_C64 maskmovdqu, XMM8, XMM9
3295
3296EMIT_INSTR_PLUS_ICEBP vmaskmovdqu, XMM0, XMM1
3297EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovdqu, XMM8, XMM9
3298%undef EMIT_FS_PREFIX
3299
3300;
3301; VMASKMOVPS
3302;
3303EMIT_INSTR_PLUS_ICEBP vmaskmovps, XMM0, XMM1, FSxBX
3304EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, XMM8, XMM9, FSxBX
3305
3306EMIT_INSTR_PLUS_ICEBP vmaskmovps, YMM0, YMM1, FSxBX
3307EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, YMM8, YMM9, FSxBX
3308
3309EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, XMM0, XMM1
3310EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, XMM8, XMM9
3311
3312EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, YMM0, YMM1
3313EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, YMM8, YMM9
3314
3315;
3316; VMASKMOVPD
3317;
3318EMIT_INSTR_PLUS_ICEBP vmaskmovpd, XMM0, XMM1, FSxBX
3319EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, XMM8, XMM9, FSxBX
3320
3321EMIT_INSTR_PLUS_ICEBP vmaskmovpd, YMM0, YMM1, FSxBX
3322EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, YMM8, YMM9, FSxBX
3323
3324EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, XMM0, XMM1
3325EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, XMM8, XMM9
3326
3327EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, YMM0, YMM1
3328EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, YMM8, YMM9
3329
3330;
3331; VPMASKMOVD
3332;
3333EMIT_INSTR_PLUS_ICEBP vpmaskmovd, XMM0, XMM1, FSxBX
3334EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, XMM8, XMM9, FSxBX
3335
3336EMIT_INSTR_PLUS_ICEBP vpmaskmovd, YMM0, YMM1, FSxBX
3337EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, YMM8, YMM9, FSxBX
3338
3339EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, XMM0, XMM1
3340EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, XMM8, XMM9
3341
3342EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, YMM0, YMM1
3343EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, YMM8, YMM9
3344
3345;
3346; VPMASKMOVQ
3347;
3348EMIT_INSTR_PLUS_ICEBP vpmaskmovq, XMM0, XMM1, FSxBX
3349EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, XMM8, XMM9, FSxBX
3350
3351EMIT_INSTR_PLUS_ICEBP vpmaskmovq, YMM0, YMM1, FSxBX
3352EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, YMM8, YMM9, FSxBX
3353
3354EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, XMM0, XMM1
3355EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, XMM8, XMM9
3356
3357EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, YMM0, YMM1
3358EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, YMM8, YMM9
3359
3360%endif ; BS3_INSTANTIATING_CMN
3361
3362%include "bs3kit-template-footer.mac" ; reset environment
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette