VirtualBox

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

Last change on this file since 107144 was 107144, checked in by vboxsync, 2 months ago

ValidationKit/bootsectors: Implement testcases for vpermd instruction; bugref:9898; jiraref:VBP-1464

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 118.1 KB
Line 
1; $Id: bs3-cpu-instr-3-template.mac 107144 2024-11-26 10:32:33Z 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]MOVLHPS
1025;
1026EMIT_INSTR_PLUS_ICEBP movlhps, XMM1, XMM2
1027EMIT_INSTR_PLUS_ICEBP vmovlhps, XMM1, XMM2, XMM3
1028EMIT_INSTR_PLUS_ICEBP_C64 movlhps, XMM8, XMM12
1029EMIT_INSTR_PLUS_ICEBP_C64 vmovlhps, XMM10, XMM14, XMM12
1030
1031;
1032; [V]MOVSLDUP
1033;
1034EMIT_INSTR_PLUS_ICEBP_XMM movsldup
1035EMIT_INSTR_PLUS_ICEBP_XMM vmovsldup
1036EMIT_INSTR_PLUS_ICEBP_YMM vmovsldup
1037EMIT_INSTR_PLUS_ICEBP_C64 movsldup, XMM8, XMM12
1038EMIT_INSTR_PLUS_ICEBP_C64 movsldup, XMM10, FSxBX
1039EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, XMM7, XMM14
1040EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, XMM11, FSxBX
1041EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, YMM12, YMM8
1042EMIT_INSTR_PLUS_ICEBP_C64 vmovsldup, YMM12, FSxBX
1043
1044;
1045; [V]MOVSHDUP
1046;
1047EMIT_INSTR_PLUS_ICEBP_XMM movshdup
1048EMIT_INSTR_PLUS_ICEBP_XMM vmovshdup
1049EMIT_INSTR_PLUS_ICEBP_YMM vmovshdup
1050EMIT_INSTR_PLUS_ICEBP_C64 movshdup, XMM8, XMM12
1051EMIT_INSTR_PLUS_ICEBP_C64 movshdup, XMM10, FSxBX
1052EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, XMM7, XMM14
1053EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, XMM11, FSxBX
1054EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, YMM12, YMM8
1055EMIT_INSTR_PLUS_ICEBP_C64 vmovshdup, YMM12, FSxBX
1056
1057;
1058; [V]MOVDDUP
1059;
1060EMIT_INSTR_PLUS_ICEBP_XMM movddup
1061EMIT_INSTR_PLUS_ICEBP_XMM vmovddup
1062EMIT_INSTR_PLUS_ICEBP_YMM vmovddup
1063EMIT_INSTR_PLUS_ICEBP_C64 movddup, XMM8, XMM12
1064EMIT_INSTR_PLUS_ICEBP_C64 movddup, XMM10, FSxBX
1065EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, XMM7, XMM14
1066EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, XMM11, FSxBX
1067EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, YMM12, YMM8
1068EMIT_INSTR_PLUS_ICEBP_C64 vmovddup, YMM12, FSxBX
1069
1070;
1071; [V]MOVAPS
1072;
1073EMIT_INSTR_PLUS_ICEBP_XMM movaps
1074EMIT_INSTR_PLUS_ICEBP_XMM vmovaps
1075EMIT_INSTR_PLUS_ICEBP_YMM vmovaps
1076EMIT_INSTR_PLUS_ICEBP_C64 movaps, XMM8, XMM12
1077EMIT_INSTR_PLUS_ICEBP_C64 movaps, XMM10, FSxBX
1078EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, XMM7, XMM14
1079EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, XMM11, FSxBX
1080EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, YMM12, YMM8
1081EMIT_INSTR_PLUS_ICEBP_C64 vmovaps, YMM12, FSxBX
1082
1083EMIT_INSTR_PLUS_ICEBP_XMM movapd
1084EMIT_INSTR_PLUS_ICEBP_XMM vmovapd
1085EMIT_INSTR_PLUS_ICEBP_YMM vmovapd
1086EMIT_INSTR_PLUS_ICEBP_C64 movapd, XMM8, XMM12
1087EMIT_INSTR_PLUS_ICEBP_C64 movapd, XMM10, FSxBX
1088EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, XMM7, XMM14
1089EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, XMM11, FSxBX
1090EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, YMM12, YMM8
1091EMIT_INSTR_PLUS_ICEBP_C64 vmovapd, YMM12, FSxBX
1092
1093;
1094; [V]MOVD
1095;
1096EMIT_INSTR_PLUS_ICEBP movd, MM1, EDX
1097EMIT_INSTR_PLUS_ICEBP movd, MM1, FSxBX
1098EMIT_INSTR_PLUS_ICEBP movd, EAX, MM1
1099EMIT_INSTR_PLUS_ICEBP movd, FSxBX, MM1
1100EMIT_INSTR_PLUS_ICEBP_C64 movd, MM1, R9D
1101EMIT_INSTR_PLUS_ICEBP_C64 movd, R10D, MM0
1102
1103EMIT_INSTR_PLUS_ICEBP movd, XMM1, EAX
1104EMIT_INSTR_PLUS_ICEBP movd, XMM1, FSxBX
1105EMIT_INSTR_PLUS_ICEBP movd, FSxBX, XMM1
1106EMIT_INSTR_PLUS_ICEBP movd, EAX, XMM1
1107EMIT_INSTR_PLUS_ICEBP_C64 movd, XMM9, R8D
1108EMIT_INSTR_PLUS_ICEBP_C64 movd, R8D, XMM9
1109EMIT_INSTR_PLUS_ICEBP_C64 movd, XMM9, FSxBX
1110EMIT_INSTR_PLUS_ICEBP_C64 movd, FSxBX, XMM9
1111
1112EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, EAX
1113EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, FSxBX
1114EMIT_INSTR_PLUS_ICEBP vmovd, FSxBX, XMM1
1115EMIT_INSTR_PLUS_ICEBP vmovd, EDX, XMM1
1116EMIT_INSTR_PLUS_ICEBP_C64 vmovd, XMM9, R9D
1117EMIT_INSTR_PLUS_ICEBP_C64 vmovd, R8D, XMM9
1118EMIT_INSTR_PLUS_ICEBP_C64 vmovd, XMM9, FSxBX
1119EMIT_INSTR_PLUS_ICEBP_C64 vmovd, FSxBX, XMM9
1120
1121;
1122; [V]MOVQ - some hand coded stuff here as the assembler prefers the 7f/6f variants.
1123;
1124EMIT_INSTR_PLUS_ICEBP_MMX movq
1125EMIT_INSTR_PLUS_ICEBP movq, FSxBX, MM1
1126EMIT_INSTR_PLUS_ICEBP_C64 movq, R9, MM1
1127EMIT_INSTR_PLUS_ICEBP_C64 movq, MM1, R9
1128 %if TMPL_BITS == 64
1129EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_MM1_FSxBX, FSxBX_PFX, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1130EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_MM1, FSxBX_PFX, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1131 %endif
1132
1133EMIT_INSTR_PLUS_ICEBP_XMM movq
1134EMIT_INSTR_PLUS_ICEBP movq, FSxBX, XMM1
1135EMIT_INSTR_PLUS_ICEBP_C64 movq, XMM9, R8
1136EMIT_INSTR_PLUS_ICEBP_C64 movq, R8, XMM9
1137EMIT_INSTR_PLUS_ICEBP_C64 movq, XMM9, FSxBX
1138EMIT_INSTR_PLUS_ICEBP_C64 movq, FSxBX, XMM9
1139 %if TMPL_BITS == 64
1140EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM1_FSxBX, FSxBX_PFX, 66h, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1141EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM9_FSxBX, FSxBX_PFX, 66h, 4ch, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1142EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM1, FSxBX_PFX, 66h, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1143EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM9, FSxBX_PFX, 66h, 4ch, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1144 %endif
1145
1146EMIT_INSTR_PLUS_ICEBP_XMM vmovq
1147EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM1_FSxBX, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1148EMIT_INSTR_PLUS_ICEBP vmovq, FSxBX, XMM1
1149EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM1, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1150EMIT_INSTR_PLUS_ICEBP_C64 vmovq, XMM9, R8
1151EMIT_INSTR_PLUS_ICEBP_C64 vmovq, R8, XMM9
1152EMIT_INSTR_PLUS_ICEBP_C64 vmovq, XMM9, FSxBX
1153EMIT_INSTR_PLUS_ICEBP_C64 vmovq, FSxBX, XMM9
1154 %if TMPL_BITS == 64
1155EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM9_FSxBX, FSxBX_PFX, 0c4h, 061h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1156EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM9, FSxBX_PFX, 0c4h, 061h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1157 %endif
1158
1159;
1160; [V]MOVDQU - not testing the 2nd register variant.
1161;
1162EMIT_INSTR_PLUS_ICEBP_XMM movdqu
1163EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM1_XMM2, 0f3h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1164EMIT_INSTR_PLUS_ICEBP movdqu, FSxBX, XMM1
1165EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, XMM2 ; C5 FA 6F CA
1166EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_XMM1_XMM2, 0c5h, 0fah, 07fh, X86_MODRM_MAKE(3, 2, 1)
1167EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, FSxBX
1168EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM1
1169EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, YMM2 ; C5 FE 6F CA
1170EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_YMM1_YMM2, 0c5h, 0feh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1171EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, FSxBX
1172EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM1
1173EMIT_INSTR_PLUS_ICEBP_C64 movdqu, XMM8, XMM12 ; F3 45 0F 6F C4
1174 %if TMPL_BITS == 64
1175EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM8_XMM12, 0f3h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1176 %endif
1177EMIT_INSTR_PLUS_ICEBP_C64 movdqu, XMM10, FSxBX
1178EMIT_INSTR_PLUS_ICEBP_C64 movdqu, FSxBX, XMM10
1179EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, XMM7, XMM14
1180EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, XMM11, FSxBX
1181EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, FSxBX, XMM11
1182EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, YMM12, YMM8
1183EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, YMM12, FSxBX
1184EMIT_INSTR_PLUS_ICEBP_C64 vmovdqu, FSxBX, YMM12
1185
1186;
1187; [V]MOVDQA - not testing the 2nd register variant.
1188;
1189EMIT_INSTR_PLUS_ICEBP_XMM movdqa
1190EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM1_XMM2, 066h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1191EMIT_INSTR_PLUS_ICEBP movdqa, FSxBX, XMM1
1192EMIT_INSTR_PLUS_ICEBP_XMM vmovdqa
1193EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM1_XMM2, 0c5h, 0f9h, 07fh, X86_MODRM_MAKE(3, 2, 1)
1194EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM1
1195EMIT_INSTR_PLUS_ICEBP_YMM vmovdqa
1196EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM1_YMM2, 0c5h, 0fdh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1197EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM1
1198 %if TMPL_BITS == 64
1199EMIT_INSTR_PLUS_ICEBP_C64 movdqa, XMM8, XMM12 ; 66 45 0F 6F C4
1200EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM8_XMM12, 066h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1201EMIT_INSTR_PLUS_ICEBP_C64 movdqa, XMM10, FSxBX
1202EMIT_INSTR_PLUS_ICEBP_C64 movdqa, FSxBX, XMM10
1203EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, XMM8, XMM14 ; C4 C1 79 6F FE
1204EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM8_XMM14, 0c4h, 041h, 79h, 07fh, X86_MODRM_MAKE(3, 6, 0)
1205EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, XMM11, FSxBX
1206EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, FSxBX, XMM11
1207EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, YMM12, YMM8
1208EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM12_YMM8, 0c4h, 041h, 7dh, 07fh, X86_MODRM_MAKE(3, 0, 4)
1209EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, YMM12, FSxBX
1210EMIT_INSTR_PLUS_ICEBP_C64 vmovdqa, FSxBX, YMM12
1211 %endif
1212
1213;
1214; [V]PTEST
1215;
1216EMIT_INSTR_PLUS_ICEBP_XMM ptest
1217EMIT_INSTR_PLUS_ICEBP_XMM vptest
1218EMIT_INSTR_PLUS_ICEBP_YMM vptest
1219EMIT_INSTR_PLUS_ICEBP_XMM_98 ptest
1220EMIT_INSTR_PLUS_ICEBP_XMM_98 vptest
1221EMIT_INSTR_PLUS_ICEBP_C64 vptest, YMM9, YMM8
1222EMIT_INSTR_PLUS_ICEBP_C64 vptest, YMM9, FSxBX
1223
1224;
1225; [V]PAVGB
1226;
1227EMIT_INSTR_PLUS_ICEBP_MMX pavgb
1228
1229EMIT_INSTR_PLUS_ICEBP_XMM pavgb
1230EMIT_INSTR_PLUS_ICEBP_XMM_89 pavgb
1231
1232EMIT_INSTR_PLUS_ICEBP_XMM_123 vpavgb
1233EMIT_INSTR_PLUS_ICEBP_XMM_890 vpavgb
1234
1235EMIT_INSTR_PLUS_ICEBP_YMM_123 vpavgb
1236EMIT_INSTR_PLUS_ICEBP_YMM_890 vpavgb
1237
1238;
1239; [V]PAVGW
1240;
1241EMIT_INSTR_PLUS_ICEBP_MMX pavgw
1242
1243EMIT_INSTR_PLUS_ICEBP_XMM pavgw
1244EMIT_INSTR_PLUS_ICEBP_XMM_89 pavgw
1245
1246EMIT_INSTR_PLUS_ICEBP_XMM_123 vpavgw
1247EMIT_INSTR_PLUS_ICEBP_XMM_890 vpavgw
1248
1249EMIT_INSTR_PLUS_ICEBP_YMM_123 vpavgw
1250EMIT_INSTR_PLUS_ICEBP_YMM_890 vpavgw
1251
1252;
1253; [V]PSIGNB
1254;
1255EMIT_INSTR_PLUS_ICEBP_MMX psignb
1256
1257EMIT_INSTR_PLUS_ICEBP_XMM psignb
1258EMIT_INSTR_PLUS_ICEBP_XMM_89 psignb
1259
1260EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignb
1261EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignb
1262
1263EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignb
1264EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignb
1265
1266;
1267; [V]PSIGNW
1268;
1269EMIT_INSTR_PLUS_ICEBP_MMX psignw
1270
1271EMIT_INSTR_PLUS_ICEBP_XMM psignw
1272EMIT_INSTR_PLUS_ICEBP_XMM_89 psignw
1273
1274EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignw
1275EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignw
1276
1277EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignw
1278EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignw
1279
1280;
1281; [V]PSIGND
1282;
1283EMIT_INSTR_PLUS_ICEBP_MMX psignd
1284
1285EMIT_INSTR_PLUS_ICEBP_XMM psignd
1286EMIT_INSTR_PLUS_ICEBP_XMM_89 psignd
1287
1288EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsignd
1289EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsignd
1290
1291EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsignd
1292EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsignd
1293
1294;
1295; [V]ABSB
1296;
1297EMIT_INSTR_PLUS_ICEBP_MMX pabsb
1298EMIT_INSTR_PLUS_ICEBP_XMM pabsb
1299EMIT_INSTR_PLUS_ICEBP_XMM vpabsb
1300EMIT_INSTR_PLUS_ICEBP_YMM vpabsb
1301EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsb
1302EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsb
1303EMIT_INSTR_PLUS_ICEBP_C64 vpabsb, YMM9, YMM8
1304EMIT_INSTR_PLUS_ICEBP_C64 vpabsb, YMM9, FSxBX
1305
1306;
1307; [V]ABSW
1308;
1309EMIT_INSTR_PLUS_ICEBP_MMX pabsw
1310EMIT_INSTR_PLUS_ICEBP_XMM pabsw
1311EMIT_INSTR_PLUS_ICEBP_XMM vpabsw
1312EMIT_INSTR_PLUS_ICEBP_YMM vpabsw
1313EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsw
1314EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsw
1315EMIT_INSTR_PLUS_ICEBP_C64 vpabsw, YMM9, YMM8
1316EMIT_INSTR_PLUS_ICEBP_C64 vpabsw, YMM9, FSxBX
1317
1318;
1319; [V]ABSD
1320;
1321EMIT_INSTR_PLUS_ICEBP_MMX pabsd
1322EMIT_INSTR_PLUS_ICEBP_XMM pabsd
1323EMIT_INSTR_PLUS_ICEBP_XMM vpabsd
1324EMIT_INSTR_PLUS_ICEBP_YMM vpabsd
1325EMIT_INSTR_PLUS_ICEBP_XMM_98 pabsd
1326EMIT_INSTR_PLUS_ICEBP_XMM_98 vpabsd
1327EMIT_INSTR_PLUS_ICEBP_C64 vpabsd, YMM9, YMM8
1328EMIT_INSTR_PLUS_ICEBP_C64 vpabsd, YMM9, FSxBX
1329
1330;
1331; [V]PHADDW
1332;
1333EMIT_INSTR_PLUS_ICEBP_MMX phaddw
1334EMIT_INSTR_PLUS_ICEBP_XMM phaddw
1335EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddw
1336EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddw
1337EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddw
1338EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddw
1339EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddw
1340
1341;
1342; [V]PHADDD
1343;
1344EMIT_INSTR_PLUS_ICEBP_MMX phaddd
1345EMIT_INSTR_PLUS_ICEBP_XMM phaddd
1346EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddd
1347EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddd
1348EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddd
1349EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddd
1350EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddd
1351
1352
1353;
1354; [V]PHSUBW
1355;
1356EMIT_INSTR_PLUS_ICEBP_MMX phsubw
1357EMIT_INSTR_PLUS_ICEBP_XMM phsubw
1358EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubw
1359EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubw
1360EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubw
1361EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubw
1362EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubw
1363
1364;
1365; [V]PHSUBD
1366;
1367EMIT_INSTR_PLUS_ICEBP_MMX phsubd
1368EMIT_INSTR_PLUS_ICEBP_XMM phsubd
1369EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubd
1370EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubd
1371EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubd
1372EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubd
1373EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubd
1374
1375;
1376; [V]PHADDSW
1377;
1378EMIT_INSTR_PLUS_ICEBP_MMX phaddsw
1379EMIT_INSTR_PLUS_ICEBP_XMM phaddsw
1380EMIT_INSTR_PLUS_ICEBP_XMM_123 vphaddsw
1381EMIT_INSTR_PLUS_ICEBP_YMM_123 vphaddsw
1382EMIT_INSTR_PLUS_ICEBP_XMM_89 phaddsw
1383EMIT_INSTR_PLUS_ICEBP_XMM_890 vphaddsw
1384EMIT_INSTR_PLUS_ICEBP_YMM_890 vphaddsw
1385
1386;
1387; [V]PHSUBSW
1388;
1389EMIT_INSTR_PLUS_ICEBP_MMX phsubsw
1390EMIT_INSTR_PLUS_ICEBP_XMM phsubsw
1391EMIT_INSTR_PLUS_ICEBP_XMM_123 vphsubsw
1392EMIT_INSTR_PLUS_ICEBP_YMM_123 vphsubsw
1393EMIT_INSTR_PLUS_ICEBP_XMM_89 phsubsw
1394EMIT_INSTR_PLUS_ICEBP_XMM_890 vphsubsw
1395EMIT_INSTR_PLUS_ICEBP_YMM_890 vphsubsw
1396
1397;
1398; [V]PMADDUBSW
1399;
1400EMIT_INSTR_PLUS_ICEBP_MMX pmaddubsw
1401EMIT_INSTR_PLUS_ICEBP_XMM pmaddubsw
1402EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaddubsw
1403EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaddubsw
1404EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaddubsw
1405EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaddubsw
1406EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaddubsw
1407
1408;
1409; [V]PMULHRSW
1410;
1411EMIT_INSTR_PLUS_ICEBP_MMX pmulhrsw
1412EMIT_INSTR_PLUS_ICEBP_XMM pmulhrsw
1413EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmulhrsw
1414EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmulhrsw
1415EMIT_INSTR_PLUS_ICEBP_XMM_89 pmulhrsw
1416EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmulhrsw
1417EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmulhrsw
1418
1419;
1420; [V]PSADBW
1421;
1422EMIT_INSTR_PLUS_ICEBP_MMX psadbw
1423EMIT_INSTR_PLUS_ICEBP_XMM psadbw
1424EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsadbw
1425EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsadbw
1426EMIT_INSTR_PLUS_ICEBP_XMM_89 psadbw
1427EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsadbw
1428EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsadbw
1429
1430;
1431; [V]PMULDQ
1432;
1433EMIT_INSTR_PLUS_ICEBP_XMM pmuldq
1434EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmuldq
1435EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmuldq
1436EMIT_INSTR_PLUS_ICEBP_XMM_89 pmuldq
1437EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmuldq
1438EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmuldq
1439
1440;
1441; [V]PMULUDQ
1442;
1443EMIT_INSTR_PLUS_ICEBP_MMX pmuludq
1444EMIT_INSTR_PLUS_ICEBP_XMM pmuludq
1445EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmuludq
1446EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmuludq
1447EMIT_INSTR_PLUS_ICEBP_XMM_89 pmuludq
1448EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmuludq
1449EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmuludq
1450
1451;
1452; [V]PUNPCKLPS
1453;
1454EMIT_INSTR_PLUS_ICEBP_XMM unpcklps
1455EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpcklps
1456EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpcklps
1457EMIT_INSTR_PLUS_ICEBP_XMM_89 unpcklps
1458EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpcklps
1459EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpcklps
1460
1461;
1462; [V]PUNPCKLPD
1463;
1464EMIT_INSTR_PLUS_ICEBP_XMM unpcklpd
1465EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpcklpd
1466EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpcklpd
1467EMIT_INSTR_PLUS_ICEBP_XMM_89 unpcklpd
1468EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpcklpd
1469EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpcklpd
1470
1471;
1472; [V]PUNPCKHPS
1473;
1474EMIT_INSTR_PLUS_ICEBP_XMM unpckhps
1475EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpckhps
1476EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpckhps
1477EMIT_INSTR_PLUS_ICEBP_XMM_89 unpckhps
1478EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpckhps
1479EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpckhps
1480
1481;
1482; [V]PUNPCKHPD
1483;
1484EMIT_INSTR_PLUS_ICEBP_XMM unpckhpd
1485EMIT_INSTR_PLUS_ICEBP_XMM_123 vunpckhpd
1486EMIT_INSTR_PLUS_ICEBP_YMM_123 vunpckhpd
1487EMIT_INSTR_PLUS_ICEBP_XMM_89 unpckhpd
1488EMIT_INSTR_PLUS_ICEBP_XMM_890 vunpckhpd
1489EMIT_INSTR_PLUS_ICEBP_YMM_890 vunpckhpd
1490
1491;
1492; [V]PMOVSXBW
1493;
1494EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbw
1495EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbw
1496EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, XMM2
1497EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, FSxBX
1498EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbw
1499EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbw
1500EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbw, YMM9, XMM8
1501EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbw, YMM9, FSxBX
1502
1503;
1504; [V]PMOVSXBD
1505;
1506EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbd
1507EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbd
1508EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, XMM2
1509EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, FSxBX
1510EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbd
1511EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbd
1512EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbd, YMM9, XMM8
1513EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbd, YMM9, FSxBX
1514
1515;
1516; [V]PMOVSXBQ
1517;
1518EMIT_INSTR_PLUS_ICEBP_XMM pmovsxbq
1519EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxbq
1520EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, XMM2
1521EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, FSxBX
1522EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxbq
1523EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxbq
1524EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbq, YMM9, XMM8
1525EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxbq, YMM9, FSxBX
1526
1527;
1528; [V]PMOVSXWD
1529;
1530EMIT_INSTR_PLUS_ICEBP_XMM pmovsxwd
1531EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxwd
1532EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, XMM2
1533EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, FSxBX
1534EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxwd
1535EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxwd
1536EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwd, YMM9, XMM8
1537EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwd, YMM9, FSxBX
1538
1539;
1540; [V]PMOVSXWQ
1541;
1542EMIT_INSTR_PLUS_ICEBP_XMM pmovsxwq
1543EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxwq
1544EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, XMM2
1545EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, FSxBX
1546EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxwq
1547EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxwq
1548EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwq, YMM9, XMM8
1549EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxwq, YMM9, FSxBX
1550
1551;
1552; [V]PMOVSXDQ
1553;
1554EMIT_INSTR_PLUS_ICEBP_XMM pmovsxdq
1555EMIT_INSTR_PLUS_ICEBP_XMM vpmovsxdq
1556EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, XMM2
1557EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, FSxBX
1558EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovsxdq
1559EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovsxdq
1560EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxdq, YMM9, XMM8
1561EMIT_INSTR_PLUS_ICEBP_C64 vpmovsxdq, YMM9, FSxBX
1562
1563;
1564; [V]PMOVZXBW
1565;
1566EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbw
1567EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbw
1568EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, XMM2
1569EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, FSxBX
1570EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbw
1571EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbw
1572EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbw, YMM9, XMM8
1573EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbw, YMM9, FSxBX
1574
1575;
1576; [V]PMOVZXBD
1577;
1578EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbd
1579EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbd
1580EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, XMM2
1581EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, FSxBX
1582EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbd
1583EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbd
1584EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbd, YMM9, XMM8
1585EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbd, YMM9, FSxBX
1586
1587;
1588; [V]PMOVZXBQ
1589;
1590EMIT_INSTR_PLUS_ICEBP_XMM pmovzxbq
1591EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxbq
1592EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, XMM2
1593EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, FSxBX
1594EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxbq
1595EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxbq
1596EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbq, YMM9, XMM8
1597EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxbq, YMM9, FSxBX
1598
1599;
1600; [V]PMOVZXWD
1601;
1602EMIT_INSTR_PLUS_ICEBP_XMM pmovzxwd
1603EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxwd
1604EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, XMM2
1605EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, FSxBX
1606EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxwd
1607EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxwd
1608EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwd, YMM9, XMM8
1609EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwd, YMM9, FSxBX
1610
1611;
1612; [V]PMOVZXWQ
1613;
1614EMIT_INSTR_PLUS_ICEBP_XMM pmovzxwq
1615EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxwq
1616EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, XMM2
1617EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, FSxBX
1618EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxwq
1619EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxwq
1620EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwq, YMM9, XMM8
1621EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxwq, YMM9, FSxBX
1622
1623;
1624; [V]PMOVZXDQ
1625;
1626EMIT_INSTR_PLUS_ICEBP_XMM pmovzxdq
1627EMIT_INSTR_PLUS_ICEBP_XMM vpmovzxdq
1628EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, XMM2
1629EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, FSxBX
1630EMIT_INSTR_PLUS_ICEBP_XMM_98 pmovzxdq
1631EMIT_INSTR_PLUS_ICEBP_XMM_98 vpmovzxdq
1632EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxdq, YMM9, XMM8
1633EMIT_INSTR_PLUS_ICEBP_C64 vpmovzxdq, YMM9, FSxBX
1634
1635;
1636; [V]SHUFPS
1637;
1638EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 0FFh
1639EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 0FFh
1640EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 000h
1641EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 000h
1642
1643EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 0FFh
1644EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 0FFh
1645EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 000h
1646EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 000h
1647
1648EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 0FFh
1649EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 0FFh
1650EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 000h
1651EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 000h
1652
1653EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, XMM9, 0FFh
1654EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, FSxBX, 0FFh
1655EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, XMM9, 000h
1656EMIT_INSTR_PLUS_ICEBP_C64 shufps, XMM8, FSxBX, 000h
1657
1658EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, XMM10, 0FFh
1659EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, FSxBX, 0FFh
1660EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, XMM10, 000h
1661EMIT_INSTR_PLUS_ICEBP_C64 vshufps, XMM8, XMM9, FSxBX, 000h
1662
1663EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, YMM10, 0FFh
1664EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, FSxBX, 0FFh
1665EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, YMM10, 000h
1666EMIT_INSTR_PLUS_ICEBP_C64 vshufps, YMM8, YMM9, FSxBX, 000h
1667
1668;
1669; [V]SHUFPD
1670;
1671EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 0FFh
1672EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 0FFh
1673EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 000h
1674EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 000h
1675
1676EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 0FFh
1677EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 0FFh
1678EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 000h
1679EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 000h
1680
1681EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 0FFh
1682EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 0FFh
1683EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 000h
1684EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 000h
1685
1686EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, XMM9, 0FFh
1687EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, FSxBX, 0FFh
1688EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, XMM9, 000h
1689EMIT_INSTR_PLUS_ICEBP_C64 shufpd, XMM8, FSxBX, 000h
1690
1691EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, XMM10, 0FFh
1692EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, FSxBX, 0FFh
1693EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, XMM10, 000h
1694EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, XMM8, XMM9, FSxBX, 000h
1695
1696EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, YMM10, 0FFh
1697EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, FSxBX, 0FFh
1698EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, YMM10, 000h
1699EMIT_INSTR_PLUS_ICEBP_C64 vshufpd, YMM8, YMM9, FSxBX, 000h
1700
1701;
1702; [V]LDDQU
1703;
1704EMIT_INSTR_PLUS_ICEBP lddqu, XMM1, FSxBX
1705EMIT_INSTR_PLUS_ICEBP vlddqu, XMM1, FSxBX
1706EMIT_INSTR_PLUS_ICEBP vlddqu, YMM1, FSxBX
1707EMIT_INSTR_PLUS_ICEBP_C64 lddqu, XMM10, FSxBX
1708EMIT_INSTR_PLUS_ICEBP_C64 vlddqu, XMM11, FSxBX
1709EMIT_INSTR_PLUS_ICEBP_C64 vlddqu, YMM12, FSxBX
1710
1711;
1712; [V]PHMINPOSUW
1713;
1714EMIT_INSTR_PLUS_ICEBP_XMM phminposuw
1715EMIT_INSTR_PLUS_ICEBP_XMM vphminposuw
1716EMIT_INSTR_PLUS_ICEBP_XMM_98 phminposuw
1717EMIT_INSTR_PLUS_ICEBP_XMM_98 vphminposuw
1718
1719;
1720; VBROADCASTSS
1721;
1722EMIT_INSTR_PLUS_ICEBP_XMM vbroadcastss
1723EMIT_INSTR_PLUS_ICEBP vbroadcastss, YMM1, XMM2
1724EMIT_INSTR_PLUS_ICEBP vbroadcastss, YMM1, FSxBX
1725EMIT_INSTR_PLUS_ICEBP_XMM_98 vbroadcastss
1726EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastss, YMM9, XMM8
1727EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastss, YMM9, FSxBX
1728
1729;
1730; VBROADCASTSD
1731;
1732EMIT_INSTR_PLUS_ICEBP vbroadcastsd, YMM1, XMM2
1733EMIT_INSTR_PLUS_ICEBP vbroadcastsd, YMM1, FSxBX
1734EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastsd, YMM9, XMM8
1735EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastsd, YMM9, FSxBX
1736
1737;
1738; VBROADCASTF128
1739;
1740EMIT_INSTR_PLUS_ICEBP vbroadcastf128, YMM1, FSxBX
1741EMIT_INSTR_PLUS_ICEBP_C64 vbroadcastf128, YMM9, FSxBX
1742
1743;
1744; VPBROADCASTB
1745;
1746EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastb
1747EMIT_INSTR_PLUS_ICEBP vpbroadcastb, YMM1, XMM2
1748EMIT_INSTR_PLUS_ICEBP vpbroadcastb, YMM1, FSxBX
1749EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastb
1750EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastb, YMM9, XMM8
1751EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastb, YMM9, FSxBX
1752
1753;
1754; VPBROADCASTW
1755;
1756EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastw
1757EMIT_INSTR_PLUS_ICEBP vpbroadcastw, YMM1, XMM2
1758EMIT_INSTR_PLUS_ICEBP vpbroadcastw, YMM1, FSxBX
1759EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastw
1760EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastw, YMM9, XMM8
1761EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastw, YMM9, FSxBX
1762
1763;
1764; VPBROADCASTD
1765;
1766EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastd
1767EMIT_INSTR_PLUS_ICEBP vpbroadcastd, YMM1, XMM2
1768EMIT_INSTR_PLUS_ICEBP vpbroadcastd, YMM1, FSxBX
1769EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastd
1770EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastd, YMM9, XMM8
1771EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastd, YMM9, FSxBX
1772
1773;
1774; VPBROADCASTQ
1775;
1776EMIT_INSTR_PLUS_ICEBP_XMM vpbroadcastq
1777EMIT_INSTR_PLUS_ICEBP vpbroadcastq, YMM1, XMM2
1778EMIT_INSTR_PLUS_ICEBP vpbroadcastq, YMM1, FSxBX
1779EMIT_INSTR_PLUS_ICEBP_XMM_98 vpbroadcastq
1780EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastq, YMM9, XMM8
1781EMIT_INSTR_PLUS_ICEBP_C64 vpbroadcastq, YMM9, FSxBX
1782
1783;
1784; VPBROADCASTI128
1785;
1786EMIT_INSTR_PLUS_ICEBP vbroadcasti128, YMM1, FSxBX
1787EMIT_INSTR_PLUS_ICEBP_C64 vbroadcasti128, YMM9, FSxBX
1788
1789;
1790; VTESTPS
1791;
1792EMIT_INSTR_PLUS_ICEBP_XMM vtestps
1793EMIT_INSTR_PLUS_ICEBP_YMM vtestps
1794EMIT_INSTR_PLUS_ICEBP_XMM_98 vtestps
1795EMIT_INSTR_PLUS_ICEBP_C64 vtestps, YMM9, YMM8
1796EMIT_INSTR_PLUS_ICEBP_C64 vtestps, YMM9, FSxBX
1797
1798;
1799; VTESTPD
1800;
1801EMIT_INSTR_PLUS_ICEBP_XMM vtestpd
1802EMIT_INSTR_PLUS_ICEBP_YMM vtestpd
1803EMIT_INSTR_PLUS_ICEBP_XMM_98 vtestpd
1804EMIT_INSTR_PLUS_ICEBP_C64 vtestpd, YMM9, YMM8
1805EMIT_INSTR_PLUS_ICEBP_C64 vtestpd, YMM9, FSxBX
1806
1807;
1808; SHA1NEXTE
1809;
1810EMIT_INSTR_PLUS_ICEBP_XMM sha1nexte
1811EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1nexte
1812
1813;
1814; SHA1MSG1
1815;
1816EMIT_INSTR_PLUS_ICEBP_XMM sha1msg1
1817EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1msg1
1818
1819;
1820; SHA1MSG2
1821;
1822EMIT_INSTR_PLUS_ICEBP_XMM sha1msg2
1823EMIT_INSTR_PLUS_ICEBP_XMM_98 sha1msg2
1824
1825;
1826; SHA256MSG1
1827;
1828EMIT_INSTR_PLUS_ICEBP_XMM sha256msg1
1829EMIT_INSTR_PLUS_ICEBP_XMM_98 sha256msg1
1830
1831;
1832; SHA256MSG2
1833;
1834EMIT_INSTR_PLUS_ICEBP_XMM sha256msg2
1835EMIT_INSTR_PLUS_ICEBP_XMM_98 sha256msg2
1836
1837;
1838; SHA1RNDS4
1839;
1840EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 000h
1841EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 000h
1842EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 001h
1843EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 001h
1844EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 002h
1845EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 002h
1846EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, XMM2, 003h
1847EMIT_INSTR_PLUS_ICEBP sha1rnds4, XMM1, FSxBX, 003h
1848EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 000h
1849EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 000h
1850EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 001h
1851EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 001h
1852EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 002h
1853EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 002h
1854EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, XMM8, 003h
1855EMIT_INSTR_PLUS_ICEBP_C64 sha1rnds4, XMM9, FSxBX, 003h
1856
1857;
1858; SHA256RNDS2 (xmm0 is implicit)
1859;
1860EMIT_INSTR_PLUS_ICEBP sha256rnds2, XMM1, XMM2, XMM0
1861EMIT_INSTR_PLUS_ICEBP sha256rnds2, XMM1, FSxBX, XMM0
1862EMIT_INSTR_PLUS_ICEBP_C64 sha256rnds2, XMM8, XMM9, XMM0
1863EMIT_INSTR_PLUS_ICEBP_C64 sha256rnds2, XMM8, FSxBX, XMM0
1864
1865;
1866; [V]PBLENDVB
1867;
1868EMIT_INSTR_PLUS_ICEBP_XMM pblendvb
1869EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, XMM3, XMM4
1870EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, FSxBX, XMM4
1871EMIT_INSTR_PLUS_ICEBP_XMM_89 pblendvb
1872EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, XMM8, XMM9, XMM10, XMM11
1873EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, XMM8, XMM9, FSxBX, XMM11
1874
1875EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, YMM3, YMM4
1876EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, FSxBX, YMM4
1877EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, YMM8, YMM9, YMM10, YMM11
1878EMIT_INSTR_PLUS_ICEBP_C64 vpblendvb, YMM8, YMM9, FSxBX, YMM11
1879
1880;
1881; [V]BLENDVPS
1882;
1883EMIT_INSTR_PLUS_ICEBP_XMM blendvps
1884EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, XMM3, XMM4
1885EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, FSxBX, XMM4
1886EMIT_INSTR_PLUS_ICEBP_XMM_89 blendvps
1887EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, XMM8, XMM9, XMM10, XMM11
1888EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, XMM8, XMM9, FSxBX, XMM11
1889
1890EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, YMM3, YMM4
1891EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, FSxBX, YMM4
1892EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, YMM8, YMM9, YMM10, YMM11
1893EMIT_INSTR_PLUS_ICEBP_C64 vblendvps, YMM8, YMM9, FSxBX, YMM11
1894
1895;
1896; [V]BLENDVPD
1897;
1898EMIT_INSTR_PLUS_ICEBP_XMM blendvpd
1899EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, XMM3, XMM4
1900EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, FSxBX, XMM4
1901EMIT_INSTR_PLUS_ICEBP_XMM_89 blendvpd
1902EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, XMM8, XMM9, XMM10, XMM11
1903EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, XMM8, XMM9, FSxBX, XMM11
1904
1905EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, YMM3, YMM4
1906EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, FSxBX, YMM4
1907EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, YMM8, YMM9, YMM10, YMM11
1908EMIT_INSTR_PLUS_ICEBP_C64 vblendvpd, YMM8, YMM9, FSxBX, YMM11
1909
1910;
1911; [V]PALIGNR
1912;
1913EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 0FFh
1914EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 0FFh
1915EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 000h
1916EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 000h
1917EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 003h
1918EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 003h
1919EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 009h
1920EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 009h
1921
1922EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 0FFh
1923EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 0FFh
1924EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 000h
1925EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 000h
1926EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 003h
1927EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 003h
1928EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 013h
1929EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 013h
1930
1931EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 0FFh
1932EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 0FFh
1933EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 000h
1934EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 000h
1935EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 003h
1936EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 003h
1937EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 013h
1938EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 013h
1939
1940EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 0FFh
1941EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 0FFh
1942EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 000h
1943EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 000h
1944EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 003h
1945EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 003h
1946EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 013h
1947EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 013h
1948
1949EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 0FFh
1950EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 0FFh
1951EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 000h
1952EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 000h
1953EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 003h
1954EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 003h
1955EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, XMM9, 013h
1956EMIT_INSTR_PLUS_ICEBP_C64 palignr, XMM8, FSxBX, 013h
1957
1958EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 0FFh
1959EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 0FFh
1960EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 000h
1961EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 000h
1962EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 003h
1963EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 003h
1964EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, XMM10, 013h
1965EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, XMM8, XMM9, FSxBX, 013h
1966
1967EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 0FFh
1968EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 0FFh
1969EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 000h
1970EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 000h
1971EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 003h
1972EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 003h
1973EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, YMM10, 013h
1974EMIT_INSTR_PLUS_ICEBP_C64 vpalignr, YMM8, YMM9, FSxBX, 013h
1975
1976;
1977; [V]PBLENDW
1978;
1979EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 0FFh
1980EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 0FFh
1981EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 000h
1982EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 000h
1983EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 07Ah
1984EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 07Ah
1985
1986EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 0FFh
1987EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 0FFh
1988EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 000h
1989EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 000h
1990EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 07Ah
1991EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 07Ah
1992
1993EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 0FFh
1994EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 0FFh
1995EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 000h
1996EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 000h
1997EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 07Ah
1998EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 07Ah
1999
2000EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 0FFh
2001EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 0FFh
2002EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 000h
2003EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 000h
2004EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, XMM9, 07Ah
2005EMIT_INSTR_PLUS_ICEBP_C64 pblendw, XMM8, FSxBX, 07Ah
2006
2007EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 0FFh
2008EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 0FFh
2009EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 000h
2010EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 000h
2011EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, XMM10, 07Ah
2012EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, XMM8, XMM9, FSxBX, 07Ah
2013
2014EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 0FFh
2015EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 0FFh
2016EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 000h
2017EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 000h
2018EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, YMM10, 07Ah
2019EMIT_INSTR_PLUS_ICEBP_C64 vpblendw, YMM8, YMM9, FSxBX, 07Ah
2020
2021;
2022; VPBLENDD
2023;
2024EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 0FFh
2025EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 0FFh
2026EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 000h
2027EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 000h
2028EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, XMM3, 07Ah
2029EMIT_INSTR_PLUS_ICEBP vpblendd, XMM1, XMM2, FSxBX, 07Ah
2030
2031EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 0FFh
2032EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 0FFh
2033EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 000h
2034EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 000h
2035EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, YMM3, 07Ah
2036EMIT_INSTR_PLUS_ICEBP vpblendd, YMM1, YMM2, FSxBX, 07Ah
2037
2038EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 0FFh
2039EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 0FFh
2040EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 000h
2041EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 000h
2042EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, XMM10, 07Ah
2043EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, XMM8, XMM9, FSxBX, 07Ah
2044
2045EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 0FFh
2046EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 0FFh
2047EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 000h
2048EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 000h
2049EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, YMM10, 07Ah
2050EMIT_INSTR_PLUS_ICEBP_C64 vpblendd, YMM8, YMM9, FSxBX, 07Ah
2051
2052;
2053; [V]BLENDPS
2054;
2055EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 0FFh
2056EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 0FFh
2057EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 000h
2058EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 000h
2059EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 07Ah
2060EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 07Ah
2061
2062EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 0FFh
2063EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 0FFh
2064EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 000h
2065EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 000h
2066EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 07Ah
2067EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 07Ah
2068
2069EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 0FFh
2070EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 0FFh
2071EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 000h
2072EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 000h
2073EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 07Ah
2074EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 07Ah
2075
2076EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 0FFh
2077EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 0FFh
2078EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 000h
2079EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 000h
2080EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, XMM9, 07Ah
2081EMIT_INSTR_PLUS_ICEBP_C64 blendps, XMM8, FSxBX, 07Ah
2082
2083EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 0FFh
2084EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 0FFh
2085EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 000h
2086EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 000h
2087EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, XMM10, 07Ah
2088EMIT_INSTR_PLUS_ICEBP_C64 vblendps, XMM8, XMM9, FSxBX, 07Ah
2089
2090EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 0FFh
2091EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 0FFh
2092EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 000h
2093EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 000h
2094EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, YMM10, 07Ah
2095EMIT_INSTR_PLUS_ICEBP_C64 vblendps, YMM8, YMM9, FSxBX, 07Ah
2096
2097;
2098; [V]BLENDPD
2099;
2100EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 0FFh
2101EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 0FFh
2102EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 000h
2103EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 000h
2104EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 006h
2105EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 006h
2106
2107EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 0FFh
2108EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 0FFh
2109EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 000h
2110EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 000h
2111EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 006h
2112EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 006h
2113
2114EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 0FFh
2115EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 0FFh
2116EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 000h
2117EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 000h
2118EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 006h
2119EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 006h
2120
2121EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 0FFh
2122EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 0FFh
2123EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 000h
2124EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 000h
2125EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, XMM9, 006h
2126EMIT_INSTR_PLUS_ICEBP_C64 blendpd, XMM8, FSxBX, 006h
2127
2128EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 0FFh
2129EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 0FFh
2130EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 000h
2131EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 000h
2132EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, XMM10, 006h
2133EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, XMM8, XMM9, FSxBX, 006h
2134
2135EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 0FFh
2136EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 0FFh
2137EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 000h
2138EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 000h
2139EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, YMM10, 006h
2140EMIT_INSTR_PLUS_ICEBP_C64 vblendpd, YMM8, YMM9, FSxBX, 006h
2141
2142;
2143; [V]PCLMULQDQ
2144;
2145EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 0FFh
2146EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 0FFh
2147EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 000h
2148EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 000h
2149
2150EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 0FFh
2151EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 0FFh
2152EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 000h
2153EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 000h
2154
2155EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, XMM9, 0FFh
2156EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, FSxBX, 0FFh
2157EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, XMM9, 000h
2158EMIT_INSTR_PLUS_ICEBP_C64 pclmulqdq, XMM8, FSxBX, 000h
2159
2160EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, XMM10, 0FFh
2161EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, FSxBX, 0FFh
2162EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, XMM10, 000h
2163EMIT_INSTR_PLUS_ICEBP_C64 vpclmulqdq, XMM8, XMM9, FSxBX, 000h
2164
2165;
2166; [V]PINSRB
2167;
2168EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, EDX, 0FFh
2169EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, FSxBX, 0FFh
2170EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, EDX, 000h
2171EMIT_INSTR_PLUS_ICEBP pinsrb, XMM1, FSxBX, 000h
2172
2173EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, EDX, 0FFh
2174EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, FSxBX, 0FFh
2175EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, EDX, 000h
2176EMIT_INSTR_PLUS_ICEBP vpinsrb, XMM1, XMM2, FSxBX, 000h
2177
2178EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, R9D, 0FFh
2179EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, FSxBX, 0FFh
2180EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, R9D, 000h
2181EMIT_INSTR_PLUS_ICEBP_C64 pinsrb, XMM8, FSxBX, 000h
2182
2183EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, R9D, 0FFh
2184EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, FSxBX, 0FFh
2185EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, R9D, 000h
2186EMIT_INSTR_PLUS_ICEBP_C64 vpinsrb, XMM8, XMM9, FSxBX, 000h
2187
2188;
2189; [V]PINSRW
2190;
2191EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 0FFh
2192EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 0FFh
2193EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 000h
2194EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 000h
2195
2196EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 0FFh
2197EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 0FFh
2198EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 000h
2199EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 000h
2200
2201EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 0FFh
2202EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 0FFh
2203EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 000h
2204EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 000h
2205
2206EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, MM1, R9D, 0FFh
2207EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, MM1, R9D, 000h
2208
2209EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9D, 0FFh
2210EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, FSxBX, 0FFh
2211EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9D, 000h
2212EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, FSxBX, 000h
2213
2214EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM1, RDX, 0FFh
2215EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9, 0FFh
2216EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM1, RDX, 000h
2217EMIT_INSTR_PLUS_ICEBP_C64 pinsrw, XMM8, R9, 000h
2218
2219EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, R9D, 0FFh
2220EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, FSxBX, 0FFh
2221EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, R9D, 000h
2222EMIT_INSTR_PLUS_ICEBP_C64 vpinsrw, XMM8, XMM9, FSxBX, 000h
2223
2224;
2225; [V]PINSRD
2226;
2227EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, EDX, 0FFh
2228EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, FSxBX, 0FFh
2229EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, EDX, 000h
2230EMIT_INSTR_PLUS_ICEBP pinsrd, XMM1, FSxBX, 000h
2231
2232EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, EDX, 0FFh
2233EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, FSxBX, 0FFh
2234EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, EDX, 000h
2235EMIT_INSTR_PLUS_ICEBP vpinsrd, XMM1, XMM2, FSxBX, 000h
2236
2237EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, R9D, 0FFh
2238EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, FSxBX, 0FFh
2239EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, R9D, 000h
2240EMIT_INSTR_PLUS_ICEBP_C64 pinsrd, XMM8, FSxBX, 000h
2241
2242EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, R9D, 0FFh
2243EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, FSxBX, 0FFh
2244EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, R9D, 000h
2245EMIT_INSTR_PLUS_ICEBP_C64 vpinsrd, XMM8, XMM9, FSxBX, 000h
2246
2247;
2248; [V]PINSRQ
2249;
2250EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, RDX, 0FFh
2251EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, FSxBX, 0FFh
2252EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, RDX, 000h
2253EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM1, FSxBX, 000h
2254
2255EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, RDX, 0FFh
2256EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, FSxBX, 0FFh
2257EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, RDX, 000h
2258EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM1, XMM2, FSxBX, 000h
2259
2260EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, R9, 0FFh
2261EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, FSxBX, 0FFh
2262EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, R9, 000h
2263EMIT_INSTR_PLUS_ICEBP_C64 pinsrq, XMM8, FSxBX, 000h
2264
2265EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, R9, 0FFh
2266EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, FSxBX, 0FFh
2267EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, R9, 000h
2268EMIT_INSTR_PLUS_ICEBP_C64 vpinsrq, XMM8, XMM9, FSxBX, 000h
2269
2270;
2271; [V]PEXTRB
2272;
2273EMIT_INSTR_PLUS_ICEBP pextrb, EDX, XMM1, 0FFh
2274EMIT_INSTR_PLUS_ICEBP pextrb, EDX, XMM1, 000h
2275EMIT_INSTR_PLUS_ICEBP pextrb, FSxBX, XMM1, 0FFh
2276EMIT_INSTR_PLUS_ICEBP pextrb, FSxBX, XMM1, 000h
2277
2278EMIT_INSTR_PLUS_ICEBP_C64 pextrb, R9D, XMM8, 0FFh
2279EMIT_INSTR_PLUS_ICEBP_C64 pextrb, R9D, XMM8, 000h
2280EMIT_INSTR_PLUS_ICEBP_C64 pextrb, FSxBX, XMM8, 0FFh
2281EMIT_INSTR_PLUS_ICEBP_C64 pextrb, FSxBX, XMM8, 000h
2282
2283EMIT_INSTR_PLUS_ICEBP vpextrb, EDX, XMM1, 0FFh
2284EMIT_INSTR_PLUS_ICEBP vpextrb, EDX, XMM1, 000h
2285EMIT_INSTR_PLUS_ICEBP vpextrb, FSxBX, XMM1, 0FFh
2286EMIT_INSTR_PLUS_ICEBP vpextrb, FSxBX, XMM1, 000h
2287
2288EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, R9D, XMM8, 0FFh
2289EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, R9D, XMM8, 000h
2290EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, FSxBX, XMM8, 0FFh
2291EMIT_INSTR_PLUS_ICEBP_C64 vpextrb, FSxBX, XMM8, 000h
2292
2293%ifnmacro vpextrb_w0b0_EDX_XMM1 1
2294 ; special encodings to prove that VEX.W is effectively ignored everywhere and that VEX.B only matters in 64-bit code.
2295 %macro vpextrb_w0b0_EDX_XMM1 1
2296 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R ; !VEX.B = REX.B = registers 8..15
2297 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT)
2298 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
2299 %endmacro
2300 %macro vpextrb_w1b0_EDX_XMM1 1
2301 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R
2302 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_W
2303 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
2304 %endmacro
2305
2306 ; invalid coding where VEX.L=1.
2307 %macro vpextrb_l1_EDX_XMM1 1
2308 db X86_OP_VEX3, 3 | X86_OP_VEX3_BYTE1_X | X86_OP_VEX3_BYTE1_R
2309 db X86_OP_VEX3_BYTE2_P_066H | (X86_OP_VEX3_BYTE2_VVVV_NONE << X86_OP_VEX3_BYTE2_VVVV_SHIFT) | X86_OP_VEX3_BYTE2_L
2310 db 14h, X86_MODRM_MAKE(X86_MOD_REG, 1, X86_GREG_xDX), %1
2311 %endmacro
2312%endif
2313EMIT_INSTR_PLUS_ICEBP vpextrb_w1b0_EDX_XMM1, 0FFh
2314EMIT_INSTR_PLUS_ICEBP vpextrb_w0b0_EDX_XMM1, 0FFh
2315EMIT_INSTR_PLUS_ICEBP vpextrb_l1_EDX_XMM1, 0FFh
2316
2317;
2318; [V]PEXTRD
2319;
2320EMIT_INSTR_PLUS_ICEBP pextrd, EDX, XMM1, 0FFh
2321EMIT_INSTR_PLUS_ICEBP pextrd, EDX, XMM1, 000h
2322EMIT_INSTR_PLUS_ICEBP pextrd, FSxBX, XMM1, 0FFh
2323EMIT_INSTR_PLUS_ICEBP pextrd, FSxBX, XMM1, 000h
2324
2325EMIT_INSTR_PLUS_ICEBP_C64 pextrd, R9D, XMM8, 0FFh
2326EMIT_INSTR_PLUS_ICEBP_C64 pextrd, R9D, XMM8, 000h
2327EMIT_INSTR_PLUS_ICEBP_C64 pextrd, FSxBX, XMM8, 0FFh
2328EMIT_INSTR_PLUS_ICEBP_C64 pextrd, FSxBX, XMM8, 000h
2329
2330EMIT_INSTR_PLUS_ICEBP vpextrd, EDX, XMM1, 0FFh
2331EMIT_INSTR_PLUS_ICEBP vpextrd, EDX, XMM1, 000h
2332EMIT_INSTR_PLUS_ICEBP vpextrd, FSxBX, XMM1, 0FFh
2333EMIT_INSTR_PLUS_ICEBP vpextrd, FSxBX, XMM1, 000h
2334
2335EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, R9D, XMM8, 0FFh
2336EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, R9D, XMM8, 000h
2337EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, FSxBX, XMM8, 0FFh
2338EMIT_INSTR_PLUS_ICEBP_C64 vpextrd, FSxBX, XMM8, 000h
2339;
2340; [V]PEXTRQ
2341;
2342EMIT_INSTR_PLUS_ICEBP_C64 pextrq, RDX, XMM1, 0FFh
2343EMIT_INSTR_PLUS_ICEBP_C64 pextrq, RDX, XMM1, 000h
2344EMIT_INSTR_PLUS_ICEBP_C64 pextrq, R9, XMM8, 0FFh
2345EMIT_INSTR_PLUS_ICEBP_C64 pextrq, R9, XMM8, 000h
2346EMIT_INSTR_PLUS_ICEBP_C64 pextrq, FSxBX, XMM8, 0FFh
2347EMIT_INSTR_PLUS_ICEBP_C64 pextrq, FSxBX, XMM8, 000h
2348
2349EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, RDX, XMM1, 0FFh
2350EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, RDX, XMM1, 000h
2351EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, R9, XMM8, 0FFh
2352EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, R9, XMM8, 000h
2353EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, FSxBX, XMM8, 0FFh
2354EMIT_INSTR_PLUS_ICEBP_C64 vpextrq, FSxBX, XMM8, 000h
2355
2356;
2357; [V]PEXTRW
2358;
2359EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 0FFh
2360EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 000h
2361
2362EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 0FFh
2363EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 000h
2364EMIT_INSTR_PLUS_ICEBP pextrw, FSxBX, XMM1, 0FFh
2365EMIT_INSTR_PLUS_ICEBP pextrw, FSxBX, XMM1, 000h
2366
2367EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, MM1, 0FFh
2368EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, MM1, 000h
2369
2370EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, XMM8, 0FFh
2371EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9D, XMM8, 000h
2372EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9, XMM8, 0FFh
2373EMIT_INSTR_PLUS_ICEBP_C64 pextrw, R9, XMM8, 000h
2374EMIT_INSTR_PLUS_ICEBP_C64 pextrw, FSxBX, XMM8, 0FFh
2375EMIT_INSTR_PLUS_ICEBP_C64 pextrw, FSxBX, XMM8, 000h
2376
2377EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 0FFh
2378EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 000h
2379EMIT_INSTR_PLUS_ICEBP vpextrw, FSxBX, XMM1, 000h
2380EMIT_INSTR_PLUS_ICEBP vpextrw, FSxBX, XMM1, 0FFh
2381
2382EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, R9D, XMM8, 0FFh
2383EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, R9D, XMM8, 000h
2384
2385EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, RDX, XMM1, 0FFh
2386EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, RDX, XMM1, 000h
2387EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, FSxBX, XMM8, 000h
2388EMIT_INSTR_PLUS_ICEBP_C64 vpextrw, FSxBX, XMM8, 0FFh
2389
2390;
2391; [v]pextrw alternate encodings (SSE4.1 & AVX 0f3a variants)
2392;
2393; These default to 0f38 / VEX map 1 entry 0c5h in the assembler, this exercises
2394; the 0f3a / VEX map 3 entry 15h variants.
2395;
2396%ifndef EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2397 %define EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2398 ;; @param 1 imm8 byte
2399 %macro EMIT_V_PEXTRW_ALT_INSTR 1
2400BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2401 db 66h, 0fh, 3ah, 15h, 0cah, %1 ; pextrw [alt] edx, xmm1, %1
2402.again:
2403 icebp
2404 jmp .again
2405BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2406
2407BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_vpextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2408 db 0c4h, 0e3h, 79h, 15h, 0cah, %1 ; vpextrw [alt] edx, xmm1, %1
2409.again:
2410 icebp
2411 jmp .again
2412BS3_PROC_END_CMN bs3CpuInstr3_vpextrw_alt_EDX_XMM1_ %+ %1 %+ _icebp
2413
2414 %if TMPL_BITS == 64
2415BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_R9D_XMM8_ %+ %1 %+ _icebp
2416 db 66h, 45h, 0fh, 3ah, 15h, 0c1h, %1 ; pextrw [alt] r9d, xmm8, %1
2417.again:
2418 icebp
2419 jmp .again
2420BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_R9D_XMM8_ %+ %1 %+ _icebp
2421
2422BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_RDX_XMM1_ %+ %1 %+ _icebp
2423 db 66h, 48h, 0fh, 3ah, 15h, 0cah, %1 ; pextrw [alt] rdx, xmm1, %1
2424.again:
2425 icebp
2426 jmp .again
2427BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_RDX_XMM1_ %+ %1 %+ _icebp
2428
2429BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_pextrw_alt_R9_XMM8_ %+ %1 %+ _icebp
2430 db 66h, 4dh, 0fh, 3ah, 15h, 0c1h, %1 ; pextrw [alt] r9, xmm8, %1
2431.again:
2432 icebp
2433 jmp .again
2434BS3_PROC_END_CMN bs3CpuInstr3_pextrw_alt_R9_XMM8_ %+ %1 %+ _icebp
2435 %endif
2436
2437 %endmacro ; EMIT_V_PEXTRW_ALT_INSTR
2438%endif ; !EMIT_V_PEXTRW_ALT_INSTR_DEFINED
2439
2440EMIT_V_PEXTRW_ALT_INSTR 000h
2441EMIT_V_PEXTRW_ALT_INSTR 0FFh
2442
2443;
2444; vgather / vpgather instructions
2445;
2446%ifndef EMIT_VGATHER_INSTR_DEFINED
2447 %define EMIT_VGATHER_INSTR_DEFINED
2448
2449 ;; @param 1 instruction name
2450 ;; @param 2 destination register
2451 ;; @param 3 base register
2452 ;; @param 4 base register offset
2453 ;; @param 5 vector register
2454 ;; @param 6 vector register scale factor
2455 ;; @param 7 mask register
2456 %macro EMIT_ONE_VGATHER_INSTR 7
2457BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _plus_ %+ %4 %+ _plus_ %+ %5 %+ _x_ %+ %6 %+ _ %+ %7 %+ _icebp
2458 fs
2459 %1 %2, [%3 + %4 + %5 * %6], %7
2460.again:
2461 icebp
2462 jmp .again
2463BS3CPUINSTR3_PROC_END_CMN
2464 %endmacro ; EMIT_ONE_VGATHER_INSTR
2465 %macro EMIT_NEG_VGATHER_INSTR 7
2466BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _less_ %+ %4 %+ _plus_ %+ %5 %+ _x_ %+ %6 %+ _ %+ %7 %+ _icebp
2467 fs
2468 %1 %2, [%3 - %4 + %5 * %6], %7
2469.again:
2470 icebp
2471 jmp .again
2472BS3CPUINSTR3_PROC_END_CMN
2473 %endmacro ; EMIT_NEG_VGATHER_INSTR
2474
2475 ;; @param 1 instruction name
2476 ;; @param 2 'XMM' or 'YMM': type of destination register
2477 ;; @param 3 'XMM' or 'YMM': type of vector register
2478 ;; @param 4 'XMM' or 'YMM': type of mask register
2479 %macro EMIT_VGATHER_INSTR_BLOCK 4
2480 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
2481 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
2482 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
2483 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, EBX, 0, %3 %+ 1, 1, %4 %+ 2 ;; baseline: v?gather?? ?mm0, [ebx+0+1*?mm1], ?mm2
2484 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, EBX, 2, %3 %+ 1, 1, %4 %+ 2 ;; offset8: v?gather?? ?mm0, [ebx+2+1*?mm1], ?mm2
2485 EMIT_NEG_VGATHER_INSTR %1, %2 %+ 0, EBX, 2, %3 %+ 1, 1, %4 %+ 2 ;; -offset8: v?gather?? ?mm0, [ebx-2+1*?mm1], ?mm2
2486 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, EBX, 153, %3 %+ 1, 1, %4 %+ 2 ;; offset32: v?gather?? ?mm0, [ebx+153+1*?mm1], ?mm2
2487 EMIT_NEG_VGATHER_INSTR %1, %2 %+ 0, EBX, 153, %3 %+ 1, 1, %4 %+ 2 ;; -offset32: v?gather?? ?mm0, [ebx-153+1*?mm1], ?mm2
2488 EMIT_ONE_VGATHER_INSTR %1, %2 %+ 0, EBX, 0, %3 %+ 1, 2, %4 %+ 2 ;; scale: v?gather?? ?mm0, [ebx+0+2*?mm1], ?mm2
2489 %if TMPL_BITS == 64
2490 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
2491 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
2492 %endif
2493 %endmacro ; EMIT_VGATHER_INSTR_BLOCK
2494
2495 ;; @param 1 instruction name
2496 ;; @param 2 'XMM' or 'YMM': type of destination register for 256-bit variants
2497 ;; @param 3 'XMM' or 'YMM': type of vector register for 256-bit variants
2498 ;; @param 4 'XMM' or 'YMM': type of mask register for 256-bit variants
2499 %macro EMIT_VGATHER_INSTR_BLOCKS 4
2500 EMIT_VGATHER_INSTR_BLOCK %1, XMM, XMM, XMM
2501 EMIT_VGATHER_INSTR_BLOCK %1, %2, %3, %4
2502 %endmacro ; EMIT_VGATHER_INSTR_BLOCKS
2503
2504%endif ; !EMIT_VGATHER_INSTR_DEFINED
2505
2506EMIT_VGATHER_INSTR_BLOCKS vgatherdps, YMM, YMM, YMM
2507EMIT_VGATHER_INSTR_BLOCKS vgatherqps, XMM, YMM, XMM
2508EMIT_VGATHER_INSTR_BLOCKS vgatherdpd, YMM, XMM, YMM
2509EMIT_VGATHER_INSTR_BLOCKS vgatherqpd, YMM, YMM, YMM
2510
2511EMIT_VGATHER_INSTR_BLOCKS vpgatherdd, YMM, YMM, YMM
2512EMIT_VGATHER_INSTR_BLOCKS vpgatherqd, XMM, YMM, XMM
2513EMIT_VGATHER_INSTR_BLOCKS vpgatherdq, YMM, XMM, YMM
2514EMIT_VGATHER_INSTR_BLOCKS vpgatherqq, YMM, YMM, YMM
2515
2516;
2517; [V]MOVMSKPS
2518;
2519EMIT_INSTR_PLUS_ICEBP movmskps, EDX, XMM1
2520EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, XMM1
2521EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, YMM1
2522
2523EMIT_INSTR_PLUS_ICEBP_C64 movmskps, R9D, XMM8
2524EMIT_INSTR_PLUS_ICEBP_C64 movmskps, RDX, XMM1
2525
2526EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, R9D, XMM8
2527EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, RDX, XMM1
2528
2529EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, R9D, YMM8
2530EMIT_INSTR_PLUS_ICEBP_C64 vmovmskps, RDX, YMM1
2531
2532;
2533; [V]MOVMSKPD
2534;
2535EMIT_INSTR_PLUS_ICEBP movmskpd, EDX, XMM1
2536EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, XMM1
2537EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, YMM1
2538
2539EMIT_INSTR_PLUS_ICEBP_C64 movmskpd, R9D, XMM8
2540EMIT_INSTR_PLUS_ICEBP_C64 movmskpd, RDX, XMM1
2541
2542EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, R9D, XMM8
2543EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, RDX, XMM1
2544
2545EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, R9D, YMM8
2546EMIT_INSTR_PLUS_ICEBP_C64 vmovmskpd, RDX, YMM1
2547
2548;
2549; [V]MPSADBW
2550;
2551EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, XMM2, 0FFh
2552EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, FSxBX, 0FFh
2553EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, XMM2, 000h
2554EMIT_INSTR_PLUS_ICEBP mpsadbw, XMM1, FSxBX, 000h
2555
2556EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, XMM3, 0FFh
2557EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, FSxBX, 0FFh
2558EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, XMM3, 000h
2559EMIT_INSTR_PLUS_ICEBP vmpsadbw, XMM1, XMM2, FSxBX, 000h
2560
2561EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, YMM3, 0FFh
2562EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, FSxBX, 0FFh
2563EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, YMM3, 000h
2564EMIT_INSTR_PLUS_ICEBP vmpsadbw, YMM1, YMM2, FSxBX, 000h
2565
2566EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, XMM9, 0FFh
2567EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, FSxBX, 0FFh
2568EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, XMM9, 000h
2569EMIT_INSTR_PLUS_ICEBP_C64 mpsadbw, XMM8, FSxBX, 000h
2570
2571EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, XMM10, 0FFh
2572EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, FSxBX, 0FFh
2573EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, XMM10, 000h
2574EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, XMM8, XMM9, FSxBX, 000h
2575
2576EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, YMM10, 0FFh
2577EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, FSxBX, 0FFh
2578EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, YMM10, 000h
2579EMIT_INSTR_PLUS_ICEBP_C64 vmpsadbw, YMM8, YMM9, FSxBX, 000h
2580
2581;
2582; VINSERTI128
2583;
2584EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 0FFh
2585EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 0FFh
2586EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, XMM3, 000h
2587EMIT_INSTR_PLUS_ICEBP vinserti128, YMM1, YMM2, FSxBX, 000h
2588
2589EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, XMM10, 0FFh
2590EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, FSxBX, 0FFh
2591EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, XMM10, 000h
2592EMIT_INSTR_PLUS_ICEBP_C64 vinserti128, YMM8, YMM9, FSxBX, 000h
2593
2594;
2595; VINSERTF128
2596;
2597EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 0FFh
2598EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 0FFh
2599EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, XMM3, 000h
2600EMIT_INSTR_PLUS_ICEBP vinsertf128, YMM1, YMM2, FSxBX, 000h
2601
2602EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, XMM10, 0FFh
2603EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, FSxBX, 0FFh
2604EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, XMM10, 000h
2605EMIT_INSTR_PLUS_ICEBP_C64 vinsertf128, YMM8, YMM9, FSxBX, 000h
2606
2607;
2608; [V]INSERTPS
2609;
2610EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 000h
2611EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 0D5h
2612EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 028h
2613EMIT_INSTR_PLUS_ICEBP insertps, XMM1, XMM2, 0FFh
2614EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 000h
2615EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 0D5h
2616EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 028h
2617EMIT_INSTR_PLUS_ICEBP insertps, XMM1, FSxBX, 0FFh
2618
2619EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 000h
2620EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 0D5h
2621EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 028h
2622EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, XMM3, 0FFh
2623EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 000h
2624EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 0D5h
2625EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 028h
2626EMIT_INSTR_PLUS_ICEBP vinsertps, XMM1, XMM2, FSxBX, 0FFh
2627
2628EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 000h
2629EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 0D5h
2630EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 028h
2631EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, XMM9, 0FFh
2632EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 000h
2633EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 0D5h
2634EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 028h
2635EMIT_INSTR_PLUS_ICEBP_C64 insertps, XMM8, FSxBX, 0FFh
2636
2637EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 000h
2638EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 0D5h
2639EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 028h
2640EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, XMM10, 0FFh
2641EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 000h
2642EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 0D5h
2643EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 028h
2644EMIT_INSTR_PLUS_ICEBP_C64 vinsertps, XMM8, XMM9, FSxBX, 0FFh
2645
2646;
2647; VEXTRACTI128
2648;
2649EMIT_INSTR_PLUS_ICEBP vextracti128, XMM1, YMM2, 0FFh
2650EMIT_INSTR_PLUS_ICEBP vextracti128, FSxBX, YMM2, 0FFh
2651EMIT_INSTR_PLUS_ICEBP vextracti128, XMM1, YMM2, 000h
2652EMIT_INSTR_PLUS_ICEBP vextracti128, FSxBX, YMM2, 000h
2653
2654EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, XMM8, YMM9, 0FFh
2655EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, FSxBX, YMM9, 0FFh
2656EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, XMM8, YMM9, 000h
2657EMIT_INSTR_PLUS_ICEBP_C64 vextracti128, FSxBX, YMM9, 000h
2658
2659;
2660; VEXTRACTF128
2661;
2662EMIT_INSTR_PLUS_ICEBP vextractf128, XMM1, YMM2, 0FFh
2663EMIT_INSTR_PLUS_ICEBP vextractf128, FSxBX, YMM2, 0FFh
2664EMIT_INSTR_PLUS_ICEBP vextractf128, XMM1, YMM2, 000h
2665EMIT_INSTR_PLUS_ICEBP vextractf128, FSxBX, YMM2, 000h
2666
2667EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, XMM8, YMM9, 0FFh
2668EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, FSxBX, YMM9, 0FFh
2669EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, XMM8, YMM9, 000h
2670EMIT_INSTR_PLUS_ICEBP_C64 vextractf128, FSxBX, YMM9, 000h
2671
2672;
2673; [V]EXTRACTPS
2674;
2675EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 000h
2676EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 001h
2677EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 002h
2678EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 003h
2679EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 032h
2680EMIT_INSTR_PLUS_ICEBP extractps, EDX, XMM1, 0FFh
2681EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 000h
2682EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 001h
2683EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 002h
2684EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 003h
2685EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 032h
2686EMIT_INSTR_PLUS_ICEBP extractps, FSxBX, XMM1, 0FFh
2687
2688EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 000h
2689EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 001h
2690EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 002h
2691EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 003h
2692EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 032h
2693EMIT_INSTR_PLUS_ICEBP vextractps, EDX, XMM1, 0FFh
2694EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 000h
2695EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 001h
2696EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 002h
2697EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 003h
2698EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 032h
2699EMIT_INSTR_PLUS_ICEBP vextractps, FSxBX, XMM1, 0FFh
2700
2701EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 000h
2702EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 001h
2703EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 002h
2704EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 003h
2705EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 032h
2706EMIT_INSTR_PLUS_ICEBP_C64 extractps, R9D, XMM8, 0FFh
2707EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 000h
2708EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 001h
2709EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 002h
2710EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 003h
2711EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 032h
2712EMIT_INSTR_PLUS_ICEBP_C64 extractps, FSxBX, XMM8, 0FFh
2713
2714EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 000h
2715EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 001h
2716EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 002h
2717EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 003h
2718EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 032h
2719EMIT_INSTR_PLUS_ICEBP_C64 vextractps, R9D, XMM8, 0FFh
2720EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 000h
2721EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 001h
2722EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 002h
2723EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 003h
2724EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 032h
2725EMIT_INSTR_PLUS_ICEBP_C64 vextractps, FSxBX, XMM8, 0FFh
2726
2727;
2728; [V]PSUBSB
2729;
2730EMIT_INSTR_PLUS_ICEBP_MMX psubsb
2731EMIT_INSTR_PLUS_ICEBP_XMM psubsb
2732EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubsb
2733EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubsb
2734EMIT_INSTR_PLUS_ICEBP_XMM_89 psubsb
2735EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubsb
2736EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubsb
2737
2738;
2739; [V]PSUBSW
2740;
2741EMIT_INSTR_PLUS_ICEBP_MMX psubsw
2742EMIT_INSTR_PLUS_ICEBP_XMM psubsw
2743EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubsw
2744EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubsw
2745EMIT_INSTR_PLUS_ICEBP_XMM_89 psubsw
2746EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubsw
2747EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubsw
2748
2749;
2750; [V]PSUBUSB
2751;
2752EMIT_INSTR_PLUS_ICEBP_MMX psubusb
2753EMIT_INSTR_PLUS_ICEBP_XMM psubusb
2754EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubusb
2755EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubusb
2756EMIT_INSTR_PLUS_ICEBP_XMM_89 psubusb
2757EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubusb
2758EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubusb
2759
2760;
2761; [V]PSUBUSW
2762;
2763EMIT_INSTR_PLUS_ICEBP_MMX psubusw
2764EMIT_INSTR_PLUS_ICEBP_XMM psubusw
2765EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsubusw
2766EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsubusw
2767EMIT_INSTR_PLUS_ICEBP_XMM_89 psubusw
2768EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsubusw
2769EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsubusw
2770
2771;
2772; [V]PADDUSB
2773;
2774EMIT_INSTR_PLUS_ICEBP_MMX paddusb
2775EMIT_INSTR_PLUS_ICEBP_XMM paddusb
2776EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddusb
2777EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddusb
2778EMIT_INSTR_PLUS_ICEBP_XMM_89 paddusb
2779EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddusb
2780EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddusb
2781
2782;
2783; [V]PADDUSW
2784;
2785EMIT_INSTR_PLUS_ICEBP_MMX paddusw
2786EMIT_INSTR_PLUS_ICEBP_XMM paddusw
2787EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddusw
2788EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddusw
2789EMIT_INSTR_PLUS_ICEBP_XMM_89 paddusw
2790EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddusw
2791EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddusw
2792
2793;
2794; [V]PADDSB
2795;
2796EMIT_INSTR_PLUS_ICEBP_MMX paddsb
2797EMIT_INSTR_PLUS_ICEBP_XMM paddsb
2798EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddsb
2799EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddsb
2800EMIT_INSTR_PLUS_ICEBP_XMM_89 paddsb
2801EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddsb
2802EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddsb
2803
2804;
2805; [V]PADDSW
2806;
2807EMIT_INSTR_PLUS_ICEBP_MMX paddsw
2808EMIT_INSTR_PLUS_ICEBP_XMM paddsw
2809EMIT_INSTR_PLUS_ICEBP_XMM_123 vpaddsw
2810EMIT_INSTR_PLUS_ICEBP_YMM_123 vpaddsw
2811EMIT_INSTR_PLUS_ICEBP_XMM_89 paddsw
2812EMIT_INSTR_PLUS_ICEBP_XMM_890 vpaddsw
2813EMIT_INSTR_PLUS_ICEBP_YMM_890 vpaddsw
2814
2815;
2816; [V]PSLLW
2817;
2818EMIT_INSTR_PLUS_ICEBP_MMX psllw
2819EMIT_INSTR_PLUS_ICEBP psllw, MM1, 001h
2820EMIT_INSTR_PLUS_ICEBP psllw, MM1, 012h
2821EMIT_INSTR_PLUS_ICEBP_XMM psllw
2822EMIT_INSTR_PLUS_ICEBP psllw, XMM1, 001h
2823EMIT_INSTR_PLUS_ICEBP psllw, XMM1, 012h
2824EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllw
2825EMIT_INSTR_PLUS_ICEBP vpsllw, XMM1, XMM2, 001h
2826EMIT_INSTR_PLUS_ICEBP vpsllw, XMM1, XMM2, 012h
2827EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, XMM3
2828EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, FSxBX
2829EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, 001h
2830EMIT_INSTR_PLUS_ICEBP vpsllw, YMM1, YMM2, 012h
2831EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllw
2832EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, XMM8, XMM9, 001h
2833EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, XMM8, XMM9, 012h
2834EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, XMM10
2835EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, FSxBX
2836EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, 001h
2837EMIT_INSTR_PLUS_ICEBP_C64 vpsllw, YMM8, YMM9, 012h
2838
2839;
2840; [V]PSLLD
2841;
2842EMIT_INSTR_PLUS_ICEBP_MMX pslld
2843EMIT_INSTR_PLUS_ICEBP pslld, MM1, 001h
2844EMIT_INSTR_PLUS_ICEBP pslld, MM1, 012h
2845EMIT_INSTR_PLUS_ICEBP pslld, MM1, 021h
2846EMIT_INSTR_PLUS_ICEBP_XMM pslld
2847EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 001h
2848EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 012h
2849EMIT_INSTR_PLUS_ICEBP pslld, XMM1, 021h
2850EMIT_INSTR_PLUS_ICEBP_XMM_123 vpslld
2851EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 001h
2852EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 012h
2853EMIT_INSTR_PLUS_ICEBP vpslld, XMM1, XMM2, 021h
2854EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, XMM3
2855EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, FSxBX
2856EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 001h
2857EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 012h
2858EMIT_INSTR_PLUS_ICEBP vpslld, YMM1, YMM2, 021h
2859EMIT_INSTR_PLUS_ICEBP_XMM_890 vpslld
2860EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 001h
2861EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 012h
2862EMIT_INSTR_PLUS_ICEBP_C64 vpslld, XMM8, XMM9, 021h
2863EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, XMM10
2864EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, FSxBX
2865EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 001h
2866EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 012h
2867EMIT_INSTR_PLUS_ICEBP_C64 vpslld, YMM8, YMM9, 021h
2868
2869;
2870; [V]PSLLQ
2871;
2872EMIT_INSTR_PLUS_ICEBP_MMX psllq
2873EMIT_INSTR_PLUS_ICEBP psllq, MM1, 001h
2874EMIT_INSTR_PLUS_ICEBP psllq, MM1, 012h
2875EMIT_INSTR_PLUS_ICEBP psllq, MM1, 045h
2876EMIT_INSTR_PLUS_ICEBP_XMM psllq
2877EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 001h
2878EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 012h
2879EMIT_INSTR_PLUS_ICEBP psllq, XMM1, 045h
2880EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllq
2881EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 001h
2882EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 012h
2883EMIT_INSTR_PLUS_ICEBP vpsllq, XMM1, XMM2, 045h
2884EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, XMM3
2885EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, FSxBX
2886EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 001h
2887EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 012h
2888EMIT_INSTR_PLUS_ICEBP vpsllq, YMM1, YMM2, 045h
2889EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllq
2890EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 001h
2891EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 012h
2892EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, XMM8, XMM9, 045h
2893EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, XMM10
2894EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, FSxBX
2895EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 001h
2896EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 012h
2897EMIT_INSTR_PLUS_ICEBP_C64 vpsllq, YMM8, YMM9, 045h
2898
2899;
2900; [V]PSRAW
2901;
2902EMIT_INSTR_PLUS_ICEBP_MMX psraw
2903EMIT_INSTR_PLUS_ICEBP psraw, MM1, 001h
2904EMIT_INSTR_PLUS_ICEBP psraw, MM1, 012h
2905EMIT_INSTR_PLUS_ICEBP_XMM psraw
2906EMIT_INSTR_PLUS_ICEBP psraw, XMM1, 001h
2907EMIT_INSTR_PLUS_ICEBP psraw, XMM1, 012h
2908EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsraw
2909EMIT_INSTR_PLUS_ICEBP vpsraw, XMM1, XMM2, 001h
2910EMIT_INSTR_PLUS_ICEBP vpsraw, XMM1, XMM2, 012h
2911EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, XMM3
2912EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, FSxBX
2913EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, 001h
2914EMIT_INSTR_PLUS_ICEBP vpsraw, YMM1, YMM2, 012h
2915EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsraw
2916EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, XMM8, XMM9, 001h
2917EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, XMM8, XMM9, 012h
2918EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, XMM10
2919EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, FSxBX
2920EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, 001h
2921EMIT_INSTR_PLUS_ICEBP_C64 vpsraw, YMM8, YMM9, 012h
2922
2923;
2924; [V]PSRAD
2925;
2926EMIT_INSTR_PLUS_ICEBP_MMX psrad
2927EMIT_INSTR_PLUS_ICEBP psrad, MM1, 001h
2928EMIT_INSTR_PLUS_ICEBP psrad, MM1, 012h
2929EMIT_INSTR_PLUS_ICEBP psrad, MM1, 021h
2930EMIT_INSTR_PLUS_ICEBP_XMM psrad
2931EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 001h
2932EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 012h
2933EMIT_INSTR_PLUS_ICEBP psrad, XMM1, 021h
2934EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrad
2935EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 001h
2936EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 012h
2937EMIT_INSTR_PLUS_ICEBP vpsrad, XMM1, XMM2, 021h
2938EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, XMM3
2939EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, FSxBX
2940EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 001h
2941EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 012h
2942EMIT_INSTR_PLUS_ICEBP vpsrad, YMM1, YMM2, 021h
2943EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrad
2944EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 001h
2945EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 012h
2946EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, XMM8, XMM9, 021h
2947EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, XMM10
2948EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, FSxBX
2949EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 001h
2950EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 012h
2951EMIT_INSTR_PLUS_ICEBP_C64 vpsrad, YMM8, YMM9, 021h
2952
2953;
2954; no VPSRAQ -- does not exist until AVX512
2955;
2956
2957;
2958; [V]PSRLW
2959;
2960EMIT_INSTR_PLUS_ICEBP_MMX psrlw
2961EMIT_INSTR_PLUS_ICEBP psrlw, MM1, 001h
2962EMIT_INSTR_PLUS_ICEBP psrlw, MM1, 012h
2963EMIT_INSTR_PLUS_ICEBP_XMM psrlw
2964EMIT_INSTR_PLUS_ICEBP psrlw, XMM1, 001h
2965EMIT_INSTR_PLUS_ICEBP psrlw, XMM1, 012h
2966EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlw
2967EMIT_INSTR_PLUS_ICEBP vpsrlw, XMM1, XMM2, 001h
2968EMIT_INSTR_PLUS_ICEBP vpsrlw, XMM1, XMM2, 012h
2969EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, XMM3
2970EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, FSxBX
2971EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, 001h
2972EMIT_INSTR_PLUS_ICEBP vpsrlw, YMM1, YMM2, 012h
2973EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlw
2974EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, XMM8, XMM9, 001h
2975EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, XMM8, XMM9, 012h
2976EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, XMM10
2977EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, FSxBX
2978EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, 001h
2979EMIT_INSTR_PLUS_ICEBP_C64 vpsrlw, YMM8, YMM9, 012h
2980
2981;
2982; [V]PSRLD
2983;
2984EMIT_INSTR_PLUS_ICEBP_MMX psrld
2985EMIT_INSTR_PLUS_ICEBP psrld, MM1, 001h
2986EMIT_INSTR_PLUS_ICEBP psrld, MM1, 012h
2987EMIT_INSTR_PLUS_ICEBP psrld, MM1, 021h
2988EMIT_INSTR_PLUS_ICEBP_XMM psrld
2989EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 001h
2990EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 012h
2991EMIT_INSTR_PLUS_ICEBP psrld, XMM1, 021h
2992EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrld
2993EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 001h
2994EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 012h
2995EMIT_INSTR_PLUS_ICEBP vpsrld, XMM1, XMM2, 021h
2996EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, XMM3
2997EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, FSxBX
2998EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 001h
2999EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 012h
3000EMIT_INSTR_PLUS_ICEBP vpsrld, YMM1, YMM2, 021h
3001EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrld
3002EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 001h
3003EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 012h
3004EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, XMM8, XMM9, 021h
3005EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, XMM10
3006EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, FSxBX
3007EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 001h
3008EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 012h
3009EMIT_INSTR_PLUS_ICEBP_C64 vpsrld, YMM8, YMM9, 021h
3010
3011;
3012; [V]PSRLQ
3013;
3014EMIT_INSTR_PLUS_ICEBP_MMX psrlq
3015EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 001h
3016EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 012h
3017EMIT_INSTR_PLUS_ICEBP psrlq, MM1, 045h
3018EMIT_INSTR_PLUS_ICEBP_XMM psrlq
3019EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 001h
3020EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 012h
3021EMIT_INSTR_PLUS_ICEBP psrlq, XMM1, 045h
3022EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlq
3023EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 001h
3024EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 012h
3025EMIT_INSTR_PLUS_ICEBP vpsrlq, XMM1, XMM2, 045h
3026EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, XMM3
3027EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, FSxBX
3028EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 001h
3029EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 012h
3030EMIT_INSTR_PLUS_ICEBP vpsrlq, YMM1, YMM2, 045h
3031EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlq
3032EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 001h
3033EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 012h
3034EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, XMM8, XMM9, 045h
3035EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, XMM10
3036EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, FSxBX
3037EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 001h
3038EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 012h
3039EMIT_INSTR_PLUS_ICEBP_C64 vpsrlq, YMM8, YMM9, 045h
3040
3041;
3042; VPSRLVD
3043;
3044EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlvd
3045EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsrlvd
3046EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlvd
3047EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsrlvd
3048
3049;
3050; VPSRLVQ
3051;
3052EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsrlvq
3053EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsrlvq
3054EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsrlvq
3055EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsrlvq
3056
3057;
3058; VPSRAVD
3059;
3060EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsravd
3061EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsravd
3062EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsravd
3063EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsravd
3064
3065;
3066; VPSLLVD
3067;
3068EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllvd
3069EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsllvd
3070EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllvd
3071EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsllvd
3072
3073;
3074; VPSLLVQ
3075;
3076EMIT_INSTR_PLUS_ICEBP_XMM_123 vpsllvq
3077EMIT_INSTR_PLUS_ICEBP_YMM_123 vpsllvq
3078EMIT_INSTR_PLUS_ICEBP_XMM_890 vpsllvq
3079EMIT_INSTR_PLUS_ICEBP_YMM_890 vpsllvq
3080
3081;
3082; [V]PSLLDQ
3083;
3084EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 000h
3085EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 005h
3086EMIT_INSTR_PLUS_ICEBP pslldq, XMM1, 012h
3087EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 000h
3088EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 005h
3089EMIT_INSTR_PLUS_ICEBP vpslldq, XMM1, XMM2, 012h
3090EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 000h
3091EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 005h
3092EMIT_INSTR_PLUS_ICEBP vpslldq, YMM1, YMM2, 012h
3093EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 000h
3094EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 005h
3095EMIT_INSTR_PLUS_ICEBP_C64 pslldq, XMM8, 012h
3096EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 000h
3097EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 005h
3098EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, XMM8, XMM9, 012h
3099EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 000h
3100EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 005h
3101EMIT_INSTR_PLUS_ICEBP_C64 vpslldq, YMM8, YMM9, 012h
3102
3103;
3104; [V]PSRLDQ
3105;
3106EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 000h
3107EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 005h
3108EMIT_INSTR_PLUS_ICEBP psrldq, XMM1, 012h
3109EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 000h
3110EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 005h
3111EMIT_INSTR_PLUS_ICEBP vpsrldq, XMM1, XMM2, 012h
3112EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 000h
3113EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 005h
3114EMIT_INSTR_PLUS_ICEBP vpsrldq, YMM1, YMM2, 012h
3115EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 000h
3116EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 005h
3117EMIT_INSTR_PLUS_ICEBP_C64 psrldq, XMM8, 012h
3118EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 000h
3119EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 005h
3120EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, XMM8, XMM9, 012h
3121EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 000h
3122EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 005h
3123EMIT_INSTR_PLUS_ICEBP_C64 vpsrldq, YMM8, YMM9, 012h
3124
3125;
3126; VPERM2I128
3127;
3128EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 0FFh
3129EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 0FFh
3130EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 000h
3131EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 000h
3132EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 001h
3133EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 001h
3134EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 002h
3135EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 002h
3136EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 003h
3137EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 003h
3138EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 008h
3139EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 008h
3140EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 010h
3141EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 010h
3142EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 020h
3143EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 020h
3144EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 030h
3145EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 030h
3146EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, YMM3, 080h
3147EMIT_INSTR_PLUS_ICEBP vperm2i128, YMM1, YMM2, FSxBX, 080h
3148EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 0FFh
3149EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 0FFh
3150EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 000h
3151EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 000h
3152EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 001h
3153EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 001h
3154EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 002h
3155EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 002h
3156EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 003h
3157EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 003h
3158EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 008h
3159EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 008h
3160EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 010h
3161EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 010h
3162EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 020h
3163EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 020h
3164EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 030h
3165EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 030h
3166EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, YMM10, 080h
3167EMIT_INSTR_PLUS_ICEBP_C64 vperm2i128, YMM8, YMM9, FSxBX, 080h
3168
3169;
3170; VPERM2F128
3171;
3172EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 0FFh
3173EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 0FFh
3174EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 000h
3175EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 000h
3176EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 001h
3177EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 001h
3178EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 002h
3179EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 002h
3180EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 003h
3181EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 003h
3182EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 008h
3183EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 008h
3184EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 010h
3185EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 010h
3186EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 020h
3187EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 020h
3188EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 030h
3189EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 030h
3190EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, YMM3, 080h
3191EMIT_INSTR_PLUS_ICEBP vperm2f128, YMM1, YMM2, FSxBX, 080h
3192EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 0FFh
3193EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 0FFh
3194EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 000h
3195EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 000h
3196EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 001h
3197EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 001h
3198EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 002h
3199EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 002h
3200EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 003h
3201EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 003h
3202EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 008h
3203EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 008h
3204EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 010h
3205EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 010h
3206EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 020h
3207EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 020h
3208EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 030h
3209EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 030h
3210EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, YMM10, 080h
3211EMIT_INSTR_PLUS_ICEBP_C64 vperm2f128, YMM8, YMM9, FSxBX, 080h
3212
3213;
3214; VPERMILPS
3215;
3216EMIT_INSTR_PLUS_ICEBP_XMM_123 vpermilps
3217EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 000h
3218EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 01Bh
3219EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 0E4h
3220EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, XMM2, 03Dh
3221EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 000h
3222EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 01Bh
3223EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 0E4h
3224EMIT_INSTR_PLUS_ICEBP vpermilps, XMM1, FSxBX, 03Dh
3225EMIT_INSTR_PLUS_ICEBP_YMM_123 vpermilps
3226EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 000h
3227EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 01Bh
3228EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 0E4h
3229EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, YMM2, 03Dh
3230EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 000h
3231EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 01Bh
3232EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 0E4h
3233EMIT_INSTR_PLUS_ICEBP vpermilps, YMM1, FSxBX, 03Dh
3234EMIT_INSTR_PLUS_ICEBP_XMM_890 vpermilps
3235EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 000h
3236EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 01Bh
3237EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 0E4h
3238EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, XMM9, 03Dh
3239EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 000h
3240EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 01Bh
3241EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 0E4h
3242EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, XMM8, FSxBX, 03Dh
3243EMIT_INSTR_PLUS_ICEBP_YMM_890 vpermilps
3244EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 000h
3245EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 01Bh
3246EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 0E4h
3247EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, YMM9, 03Dh
3248EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 000h
3249EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 01Bh
3250EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 0E4h
3251EMIT_INSTR_PLUS_ICEBP_C64 vpermilps, YMM8, FSxBX, 03Dh
3252
3253;
3254; VPERMILPD
3255;
3256EMIT_INSTR_PLUS_ICEBP_XMM_123 vpermilpd
3257EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 000h
3258EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 0E7h
3259EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, XMM2, 091h
3260EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 000h
3261EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 0E7h
3262EMIT_INSTR_PLUS_ICEBP vpermilpd, XMM1, FSxBX, 091h
3263EMIT_INSTR_PLUS_ICEBP_YMM_123 vpermilpd
3264EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 000h
3265EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 0E7h
3266EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, YMM2, 091h
3267EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 000h
3268EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 0E7h
3269EMIT_INSTR_PLUS_ICEBP vpermilpd, YMM1, FSxBX, 091h
3270EMIT_INSTR_PLUS_ICEBP_XMM_890 vpermilpd
3271EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 000h
3272EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 0E7h
3273EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, XMM9, 091h
3274EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 000h
3275EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 0E7h
3276EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, XMM8, FSxBX, 091h
3277EMIT_INSTR_PLUS_ICEBP_YMM_890 vpermilpd
3278EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 000h
3279EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 0E7h
3280EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, YMM9, 091h
3281EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 000h
3282EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 0E7h
3283EMIT_INSTR_PLUS_ICEBP_C64 vpermilpd, YMM8, FSxBX, 091h
3284
3285;
3286; VPERMPS
3287;
3288EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM2, YMM3
3289EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM2, FSxBX
3290EMIT_INSTR_PLUS_ICEBP_C64 vpermps, YMM8, YMM9, YMM10
3291EMIT_INSTR_PLUS_ICEBP_C64 vpermps, YMM8, YMM9, FSxBX
3292EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM2, YMM2
3293EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM1, YMM2
3294EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM2, YMM1
3295EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM1, YMM1
3296EMIT_INSTR_PLUS_ICEBP vpermps, YMM1, YMM1, FSxBX
3297
3298;
3299; VPERMPD
3300;
3301EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM2, 000h
3302EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM2, 0E7h
3303EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM2, 091h
3304EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, FSxBX, 000h
3305EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, FSxBX, 0E7h
3306EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, FSxBX, 091h
3307EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, YMM9, 000h
3308EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, YMM9, 0E7h
3309EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, YMM9, 091h
3310EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, FSxBX, 000h
3311EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, FSxBX, 0E7h
3312EMIT_INSTR_PLUS_ICEBP_C64 vpermpd, YMM8, FSxBX, 091h
3313EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM1, 000h
3314EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM1, 0E7h
3315EMIT_INSTR_PLUS_ICEBP vpermpd, YMM1, YMM1, 091h
3316
3317;
3318; VPERMD
3319;
3320EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM2, YMM3
3321EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM2, FSxBX
3322EMIT_INSTR_PLUS_ICEBP_C64 vpermd, YMM8, YMM9, YMM10
3323EMIT_INSTR_PLUS_ICEBP_C64 vpermd, YMM8, YMM9, FSxBX
3324EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM2, YMM2
3325EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM1, YMM2
3326EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM2, YMM1
3327EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM1, YMM1
3328EMIT_INSTR_PLUS_ICEBP vpermd, YMM1, YMM1, FSxBX
3329
3330;
3331; VPERMQ
3332;
3333EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM2, 000h
3334EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM2, 0E7h
3335EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM2, 091h
3336EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, FSxBX, 000h
3337EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, FSxBX, 0E7h
3338EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, FSxBX, 091h
3339EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9, 000h
3340EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9, 0E7h
3341EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, YMM9, 091h
3342EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 000h
3343EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 0E7h
3344EMIT_INSTR_PLUS_ICEBP_C64 vpermq, YMM8, FSxBX, 091h
3345EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM1, 000h
3346EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM1, 0E7h
3347EMIT_INSTR_PLUS_ICEBP vpermq, YMM1, YMM1, 091h
3348
3349;
3350; [V]PMADDUBSW
3351;
3352EMIT_INSTR_PLUS_ICEBP_MMX pmaddwd
3353EMIT_INSTR_PLUS_ICEBP_XMM pmaddwd
3354EMIT_INSTR_PLUS_ICEBP_XMM_123 vpmaddwd
3355EMIT_INSTR_PLUS_ICEBP_YMM_123 vpmaddwd
3356EMIT_INSTR_PLUS_ICEBP_XMM_89 pmaddwd
3357EMIT_INSTR_PLUS_ICEBP_XMM_890 vpmaddwd
3358EMIT_INSTR_PLUS_ICEBP_YMM_890 vpmaddwd
3359
3360;
3361; MASKMOVQ
3362;
3363%define EMIT_FS_PREFIX
3364EMIT_INSTR_PLUS_ICEBP maskmovq, MM0, MM1
3365%undef EMIT_FS_PREFIX
3366
3367;
3368; [V]MASKMOVDQU
3369;
3370%define EMIT_FS_PREFIX
3371EMIT_INSTR_PLUS_ICEBP maskmovdqu, XMM0, XMM1
3372EMIT_INSTR_PLUS_ICEBP_C64 maskmovdqu, XMM8, XMM9
3373
3374EMIT_INSTR_PLUS_ICEBP vmaskmovdqu, XMM0, XMM1
3375EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovdqu, XMM8, XMM9
3376%undef EMIT_FS_PREFIX
3377
3378;
3379; VMASKMOVPS
3380;
3381EMIT_INSTR_PLUS_ICEBP vmaskmovps, XMM0, XMM1, FSxBX
3382EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, XMM8, XMM9, FSxBX
3383
3384EMIT_INSTR_PLUS_ICEBP vmaskmovps, YMM0, YMM1, FSxBX
3385EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, YMM8, YMM9, FSxBX
3386
3387EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, XMM0, XMM1
3388EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, XMM8, XMM9
3389
3390EMIT_INSTR_PLUS_ICEBP vmaskmovps, FSxBX, YMM0, YMM1
3391EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovps, FSxBX, YMM8, YMM9
3392
3393;
3394; VMASKMOVPD
3395;
3396EMIT_INSTR_PLUS_ICEBP vmaskmovpd, XMM0, XMM1, FSxBX
3397EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, XMM8, XMM9, FSxBX
3398
3399EMIT_INSTR_PLUS_ICEBP vmaskmovpd, YMM0, YMM1, FSxBX
3400EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, YMM8, YMM9, FSxBX
3401
3402EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, XMM0, XMM1
3403EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, XMM8, XMM9
3404
3405EMIT_INSTR_PLUS_ICEBP vmaskmovpd, FSxBX, YMM0, YMM1
3406EMIT_INSTR_PLUS_ICEBP_C64 vmaskmovpd, FSxBX, YMM8, YMM9
3407
3408;
3409; VPMASKMOVD
3410;
3411EMIT_INSTR_PLUS_ICEBP vpmaskmovd, XMM0, XMM1, FSxBX
3412EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, XMM8, XMM9, FSxBX
3413
3414EMIT_INSTR_PLUS_ICEBP vpmaskmovd, YMM0, YMM1, FSxBX
3415EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, YMM8, YMM9, FSxBX
3416
3417EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, XMM0, XMM1
3418EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, XMM8, XMM9
3419
3420EMIT_INSTR_PLUS_ICEBP vpmaskmovd, FSxBX, YMM0, YMM1
3421EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovd, FSxBX, YMM8, YMM9
3422
3423;
3424; VPMASKMOVQ
3425;
3426EMIT_INSTR_PLUS_ICEBP vpmaskmovq, XMM0, XMM1, FSxBX
3427EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, XMM8, XMM9, FSxBX
3428
3429EMIT_INSTR_PLUS_ICEBP vpmaskmovq, YMM0, YMM1, FSxBX
3430EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, YMM8, YMM9, FSxBX
3431
3432EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, XMM0, XMM1
3433EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, XMM8, XMM9
3434
3435EMIT_INSTR_PLUS_ICEBP vpmaskmovq, FSxBX, YMM0, YMM1
3436EMIT_INSTR_PLUS_ICEBP_C64 vpmaskmovq, FSxBX, YMM8, YMM9
3437
3438%endif ; BS3_INSTANTIATING_CMN
3439
3440%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