VirtualBox

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

Last change on this file since 98103 was 98103, checked in by vboxsync, 22 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 94.6 KB
Line 
1; $Id: bs3-cpu-instr-3-template.mac 98103 2023-01-17 14:15:46Z vboxsync $
2;; @file
3; BS3Kit - bs3-cpu-instr-3 - MMX, SSE and AVX instructions, assembly template.
4;
5
6;
7; Copyright (C) 2007-2023 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 align 8, db 0cch
67 db BS3_CMN_NM(%1).again - BS3_CMN_NM(%1)
68BS3_PROC_BEGIN_CMN %1, BS3_PBC_NEAR
69 %endmacro
70 %endif
71
72;;
73; The EMIT_INSTR_PLUS_ICEBP macros is for creating a common function for and
74; named after a single instruction, followed by a looping ICEBP.
75;
76; This works like a prefix to the instruction invocation, only exception is that
77; instead of [fs:xBX] you write FSxBS as that's what is wanted in the name.
78;
79 %ifndef EMIT_INSTR_PLUS_ICEBP_DEFINED
80 %define EMIT_INSTR_PLUS_ICEBP_DEFINED
81
82 %macro EMIT_INSTR_PLUS_ICEBP 2
83BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _icebp
84 %define FSxBX [fs:xBX]
85 %1 %2
86 %undef FSxBX
87.again:
88 icebp
89 jmp .again
90BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _icebp
91 %endmacro
92
93 %macro EMIT_INSTR_PLUS_ICEBP 3
94BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
95 %define FSxBX [fs:xBX]
96 %1 %2, %3
97 %undef FSxBX
98.again:
99 icebp
100 jmp .again
101BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
102 %endmacro
103
104 %macro EMIT_INSTR_PLUS_ICEBP 4
105BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
106 %define FSxBX [fs:xBX]
107 %1 %2, %3, %4
108 %undef FSxBX
109.again:
110 icebp
111 jmp .again
112BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
113 %endmacro
114
115 %macro EMIT_INSTR_PLUS_ICEBP 5
116BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
117 %define FSxBX [fs:xBX]
118 %1 %2, %3, %4, %5
119 %undef FSxBX
120.again:
121 icebp
122 jmp .again
123BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
124 %endmacro
125
126 %endif
127
128;;
129; Companion to EMIT_INSTR_PLUS_ICEBP for dealing stuff that the assmbler does
130; not want to emit.
131;
132; @param 1 The function name (omitting bs3CpuInstr3_ and _icebp).
133; @param 2+ The opcode bytes. FSxBX_PFX and FSxBX_MODRM are defined locally.
134;
135 %ifndef EMIT_INSTR_PLUS_ICEBP_BYTES_DEFINED
136 %define EMIT_INSTR_PLUS_ICEBP_BYTES_DEFINED
137
138 %macro EMIT_INSTR_PLUS_ICEBP_BYTES 2+
139BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _icebp
140 %define FSxBX_PFX 64h
141 %if TMPL_BITS == 16
142 %define FSxBX_MODRM 07h
143 %else
144 %define FSxBX_MODRM 03h
145 %endif
146 db %2
147 %undef FSxBX_MODRM
148 %undef FSxBX_PFX
149.again:
150 icebp
151 jmp .again
152BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _icebp
153 %endmacro
154 %endif
155
156
157
158%ifndef EMIT_TYPE1_INSTR_DEFINED
159 %define EMIT_TYPE1_INSTR_DEFINED
160 ;; @param 7 Indicates whether the 2nd and 3rd pair has MMX variants.
161 %macro EMIT_TYPE1_INSTR 7
162;
163; PXOR (SSE2) & VPXOR (AVX2)
164;
165BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_MM2_icebp
166 %1 mm1, mm2
167.again:
168 icebp
169 jmp .again
170BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_MM2_icebp
171
172BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_FSxBX_icebp
173 %1 mm1, [fs:xBX]
174.again:
175 icebp
176 jmp .again
177BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_FSxBX_icebp
178
179BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_XMM2_icebp
180 %1 xmm1, xmm2
181.again:
182 icebp
183 jmp .again
184BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_XMM2_icebp
185
186BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_FSxBX_icebp
187 %1 xmm1, [fs:xBX]
188.again:
189 icebp
190 jmp .again
191BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_FSxBX_icebp
192
193BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _XMM1_XMM1_XMM2_icebp
194 %2 xmm1, xmm1, xmm2
195.again:
196 icebp
197 jmp .again
198BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _XMM1_XMM1_XMM2_icebp
199
200BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _XMM1_XMM1_FSxBX_icebp
201 %2 xmm1, xmm1, [fs:xBX]
202.again:
203 icebp
204 jmp .again
205BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _XMM1_XMM1_FSxBX_icebp
206
207BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _YMM7_YMM2_YMM3_icebp
208 %2 ymm7, ymm2, ymm3
209.again:
210 icebp
211 jmp .again
212BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _YMM7_YMM2_YMM3_icebp
213
214BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _YMM7_YMM2_FSxBX_icebp
215 %2 ymm7, ymm2, [fs:xBX]
216.again:
217 icebp
218 jmp .again
219BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _YMM7_YMM2_FSxBX_icebp
220
221
222;
223; XORPS (SSE2) & VXORPS (AVX)
224;
225 %if %7 != 0
226BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %3 %+ _MM1_MM2_icebp
227 %3 mm1, mm2
228.again:
229 icebp
230 jmp .again
231BS3_PROC_END_CMN bs3CpuInstr3_ %+ %3 %+ _MM1_MM2_icebp
232
233BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %3 %+ _MM1_FSxBX_icebp
234 %3 mm1, [fs:xBX]
235.again:
236 icebp
237 jmp .again
238BS3_PROC_END_CMN bs3CpuInstr3_ %+ %3 %+ _MM1_FSxBX_icebp
239 %endif
240
241BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %3 %+ _XMM1_XMM2_icebp
242 %3 xmm1, xmm2
243.again:
244 icebp
245 jmp .again
246BS3_PROC_END_CMN bs3CpuInstr3_ %+ %3 %+ _XMM1_XMM2_icebp
247
248BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %3 %+ _XMM1_FSxBX_icebp
249 %3 xmm1, [fs:xBX]
250.again:
251 icebp
252 jmp .again
253BS3_PROC_END_CMN bs3CpuInstr3_ %+ %3 %+ _XMM1_FSxBX_icebp
254
255BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %4 %+ _XMM1_XMM1_XMM2_icebp
256 %4 xmm1, xmm1, xmm2
257.again:
258 icebp
259 jmp .again
260BS3_PROC_END_CMN bs3CpuInstr3_ %+ %4 %+ _XMM1_XMM1_XMM2_icebp
261
262BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %4 %+ _XMM1_XMM1_FSxBX_icebp
263 %4 xmm1, xmm1, [fs:xBX]
264.again:
265 icebp
266 jmp .again
267BS3_PROC_END_CMN bs3CpuInstr3_ %+ %4 %+ _XMM1_XMM1_FSxBX_icebp
268
269BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %4 %+ _YMM1_YMM1_YMM2_icebp
270 %4 ymm1, ymm1, ymm2
271.again:
272 icebp
273 jmp .again
274BS3_PROC_END_CMN bs3CpuInstr3_ %+ %4 %+ _YMM1_YMM1_YMM2_icebp
275
276BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %4 %+ _YMM1_YMM1_FSxBX_icebp
277 %4 ymm1, ymm1, [fs:xBX]
278.again:
279 icebp
280 jmp .again
281BS3_PROC_END_CMN bs3CpuInstr3_ %+ %4 %+ _YMM1_YMM1_FSxBX_icebp
282
283
284
285;
286; XORPD (SSE2) & VXORPD (AVX)
287;
288 %if %7 != 0
289BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %5 %+ _MM1_MM2_icebp
290 %5 mm1, mm2
291.again:
292 icebp
293 jmp .again
294BS3_PROC_END_CMN bs3CpuInstr3_ %+ %5 %+ _MM1_MM2_icebp
295
296BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %5 %+ _MM1_FSxBX_icebp
297 %5 mm1, [fs:xBX]
298.again:
299 icebp
300 jmp .again
301BS3_PROC_END_CMN bs3CpuInstr3_ %+ %5 %+ _MM1_FSxBX_icebp
302 %endif
303
304BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %5 %+ _XMM1_XMM2_icebp
305 %5 xmm1, xmm2
306.again:
307 icebp
308 jmp .again
309BS3_PROC_END_CMN bs3CpuInstr3_ %+ %5 %+ _XMM1_XMM2_icebp
310
311BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %5 %+ _XMM1_FSxBX_icebp
312 %5 xmm1, [fs:xBX]
313.again:
314 icebp
315 jmp .again
316BS3_PROC_END_CMN bs3CpuInstr3_ %+ %5 %+ _XMM1_FSxBX_icebp
317
318BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %6 %+ _XMM2_XMM1_XMM0_icebp
319 %6 xmm2, xmm1, xmm0
320.again:
321 icebp
322 jmp .again
323BS3_PROC_END_CMN bs3CpuInstr3_ %+ %6 %+ _XMM2_XMM1_XMM0_icebp
324
325BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %6 %+ _XMM2_XMM1_FSxBX_icebp
326 %6 xmm2, xmm1, [fs:xBX]
327.again:
328 icebp
329 jmp .again
330BS3_PROC_END_CMN bs3CpuInstr3_ %+ %6 %+ _XMM2_XMM1_FSxBX_icebp
331
332BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %6 %+ _YMM2_YMM1_YMM0_icebp
333 %6 ymm2, ymm1, ymm0
334.again:
335 icebp
336 jmp .again
337BS3_PROC_END_CMN bs3CpuInstr3_ %+ %6 %+ _YMM2_YMM1_YMM0_icebp
338
339BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %6 %+ _YMM2_YMM1_FSxBX_icebp
340 %6 ymm2, ymm1, [fs:xBX]
341.again:
342 icebp
343 jmp .again
344BS3_PROC_END_CMN bs3CpuInstr3_ %+ %6 %+ _YMM2_YMM1_FSxBX_icebp
345
346 %if TMPL_BITS == 64
347BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %6 %+ _YMM10_YMM8_YMM15_icebp
348 %6 ymm10, ymm8, ymm15
349.again:
350 icebp
351 jmp .again
352BS3_PROC_END_CMN bs3CpuInstr3_ %+ %6 %+ _YMM10_YMM8_YMM15_icebp
353 %endif
354
355 %endmacro ; EMIT_TYPE1_INSTR
356
357 %macro EMIT_TYPE1_ONE_INSTR 3
358 %if %3 != 0
359BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_MM2_icebp
360 %1 mm1, mm2
361.again:
362 icebp
363 jmp .again
364BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_MM2_icebp
365
366BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_FSxBX_icebp
367 %1 mm1, [fs:xBX]
368.again:
369 icebp
370 jmp .again
371BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _MM1_FSxBX_icebp
372 %endif
373
374BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_XMM2_icebp
375 %1 xmm1, xmm2
376.again:
377 icebp
378 jmp .again
379BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_XMM2_icebp
380
381BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_FSxBX_icebp
382 %1 xmm1, [fs:xBX]
383.again:
384 icebp
385 jmp .again
386BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _XMM1_FSxBX_icebp
387
388BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _XMM2_XMM1_XMM0_icebp
389 %2 xmm2, xmm1, xmm0
390.again:
391 icebp
392 jmp .again
393BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _XMM2_XMM1_XMM0_icebp
394
395BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _XMM2_XMM1_FSxBX_icebp
396 %2 xmm2, xmm1, [fs:xBX]
397.again:
398 icebp
399 jmp .again
400BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _XMM2_XMM1_FSxBX_icebp
401
402BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _YMM2_YMM1_YMM0_icebp
403 %2 ymm2, ymm1, ymm0
404.again:
405 icebp
406 jmp .again
407BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _YMM2_YMM1_YMM0_icebp
408
409BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _YMM2_YMM1_FSxBX_icebp
410 %2 ymm2, ymm1, [fs:xBX]
411.again:
412 icebp
413 jmp .again
414BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _YMM2_YMM1_FSxBX_icebp
415
416 %if TMPL_BITS == 64
417BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _YMM10_YMM8_YMM15_icebp
418 %2 ymm10, ymm8, ymm15
419.again:
420 icebp
421 jmp .again
422BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _YMM10_YMM8_YMM15_icebp
423 %endif
424 %endmacro ; EMIT_TYPE1_ONE_INSTR
425
426%endif
427
428EMIT_TYPE1_INSTR pand, vpand, andps, vandps, andpd, vandpd, 0
429EMIT_TYPE1_INSTR pandn, vpandn, andnps, vandnps, andnpd, vandnpd, 0
430EMIT_TYPE1_INSTR por, vpor, orps, vorps, orpd, vorpd, 0
431EMIT_TYPE1_INSTR pxor, vpxor, xorps, vxorps, xorpd, vxorpd, 0
432
433EMIT_TYPE1_INSTR pcmpgtb, vpcmpgtb, pcmpgtw, vpcmpgtw, pcmpgtd, vpcmpgtd, 1
434EMIT_TYPE1_ONE_INSTR pcmpgtq, vpcmpgtq, 0
435EMIT_TYPE1_INSTR pcmpeqb, vpcmpeqb, pcmpeqw, vpcmpeqw, pcmpeqd, vpcmpeqd, 1
436EMIT_TYPE1_ONE_INSTR pcmpeqq, vpcmpeqq, 0
437
438EMIT_TYPE1_INSTR paddb, vpaddb, paddw, vpaddw, paddd, vpaddd, 1
439EMIT_TYPE1_ONE_INSTR paddq, vpaddq, 1
440
441EMIT_TYPE1_INSTR psubb, vpsubb, psubw, vpsubw, psubd, vpsubd, 1
442EMIT_TYPE1_ONE_INSTR psubq, vpsubq, 1
443
444
445;
446; Type 2 instructions. On the form: pxxxx sAX, [zy]mm0
447;
448%ifndef EMIT_TYPE2_ONE_INSTR_DEFINED
449 %define EMIT_TYPE2_ONE_INSTR_DEFINED
450 ;; @param 1 MMX/SSE instruction name
451 ;; @param 2 AVX instruction name
452 ;; @param 3 Whether to emit MMX function
453 ;; @param 4 The opcode byte. (assuming two byte / vex map 1)
454 %macro EMIT_TYPE2_ONE_INSTR 4
455 %if %3 != 0
456BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_MM2_icebp
457 %1 eax, mm2
458.again:
459 icebp
460 jmp .again
461BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_MM2_icebp
462
463BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_qword_FSxBX_icebp
464 %if TMPL_BITS == 16
465 db 64h, 0fh, %4, 7 ; %1 eax, qword [fs:xBX]
466 %else
467 db 64h, 0fh, %4, 3 ; %1 eax, qword [fs:xBX]
468 %endif
469.again:
470 icebp
471 jmp .again
472BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_qword_FSxBX_icebp
473 %endif
474
475BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_XMM2_icebp
476 %1 eax, xmm2
477.again:
478 icebp
479 jmp .again
480BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_XMM2_icebp
481
482BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_dqword_FSxBX_icebp
483 %if TMPL_BITS == 16
484 db 64h, 66h, 0fh, %4, 7 ; %1 eax, dqword [fs:xBX]
485 %else
486 db 64h, 66h, 0fh, %4, 3 ; %1 eax, dqword [fs:xBX]
487 %endif
488.again:
489 icebp
490 jmp .again
491BS3_PROC_END_CMN bs3CpuInstr3_ %+ %1 %+ _EAX_dqword_FSxBX_icebp
492
493BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_XMM2_icebp
494 %2 eax, xmm2
495.again:
496 icebp
497 jmp .again
498BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_XMM2_icebp
499
500BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_dqword_FSxBX_icebp
501 %if TMPL_BITS == 16
502 db 64h, 0c4h, 0e0h, 071h, %4, 7 ; %2 eax, dqword [fs:xBX]
503 %else
504 db 64h, 0c4h, 0e0h, 071h, %4, 3 ; %2 eax, dqword [fs:xBX]
505 %endif
506.again:
507 icebp
508 jmp .again
509BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_dqword_FSxBX_icebp
510
511BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_YMM2_icebp
512 %2 eax, ymm2
513.again:
514 icebp
515 jmp .again
516BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_YMM2_icebp
517
518BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_qqword_FSxBX_icebp
519 %if TMPL_BITS == 16
520 db 64h, 0c4h, 0e0h, 075h, %4, 7 ; %2 eax, qqword [fs:xBX]
521 %else
522 db 64h, 0c4h, 0e0h, 075h, %4, 3 ; %2 eax, qqword [fs:xBX]
523 %endif
524.again:
525 icebp
526 jmp .again
527BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _EAX_qqword_FSxBX_icebp
528
529 %if TMPL_BITS == 64
530BS3CPUINSTR3_PROC_BEGIN_CMN bs3CpuInstr3_ %+ %2 %+ _RAX_YMM9_icebp
531 %2 rax, ymm9
532.again:
533 icebp
534 jmp .again
535BS3_PROC_END_CMN bs3CpuInstr3_ %+ %2 %+ _RAX_YMM9_icebp
536 %endif
537 %endmacro ; EMIT_TYPE2_ONE_INSTR
538%endif
539
540EMIT_TYPE2_ONE_INSTR pmovmskb, vpmovmskb, 1, 0d7h
541
542;
543; [V]PMULLW
544;
545EMIT_INSTR_PLUS_ICEBP pmullw, MM1, MM2
546EMIT_INSTR_PLUS_ICEBP pmullw, MM1, FSxBX
547
548EMIT_INSTR_PLUS_ICEBP pmullw, XMM1, XMM2
549EMIT_INSTR_PLUS_ICEBP pmullw, XMM1, FSxBX
550 %if TMPL_BITS == 64
551EMIT_INSTR_PLUS_ICEBP pmullw, XMM8, XMM9
552EMIT_INSTR_PLUS_ICEBP pmullw, XMM8, FSxBX
553 %endif
554
555EMIT_INSTR_PLUS_ICEBP vpmullw, XMM1, XMM1, XMM2
556EMIT_INSTR_PLUS_ICEBP vpmullw, XMM1, XMM1, FSxBX
557 %if TMPL_BITS == 64
558EMIT_INSTR_PLUS_ICEBP vpmullw, XMM8, XMM9, XMM10
559EMIT_INSTR_PLUS_ICEBP vpmullw, XMM8, XMM9, FSxBX
560 %endif
561
562EMIT_INSTR_PLUS_ICEBP vpmullw, YMM1, YMM1, YMM2
563EMIT_INSTR_PLUS_ICEBP vpmullw, YMM1, YMM1, FSxBX
564 %if TMPL_BITS == 64
565EMIT_INSTR_PLUS_ICEBP vpmullw, YMM8, YMM9, YMM10
566EMIT_INSTR_PLUS_ICEBP vpmullw, YMM8, YMM9, FSxBX
567 %endif
568
569;
570; [V]PMULLD
571;
572EMIT_INSTR_PLUS_ICEBP pmulld, XMM1, XMM2
573EMIT_INSTR_PLUS_ICEBP pmulld, XMM1, FSxBX
574 %if TMPL_BITS == 64
575EMIT_INSTR_PLUS_ICEBP pmulld, XMM8, XMM9
576EMIT_INSTR_PLUS_ICEBP pmulld, XMM8, FSxBX
577 %endif
578
579EMIT_INSTR_PLUS_ICEBP vpmulld, XMM2, XMM1, XMM0
580EMIT_INSTR_PLUS_ICEBP vpmulld, XMM2, XMM1, FSxBX
581 %if TMPL_BITS == 64
582EMIT_INSTR_PLUS_ICEBP vpmulld, XMM8, XMM9, XMM10
583EMIT_INSTR_PLUS_ICEBP vpmulld, XMM8, XMM9, FSxBX
584 %endif
585
586EMIT_INSTR_PLUS_ICEBP vpmulld, YMM2, YMM1, YMM0
587EMIT_INSTR_PLUS_ICEBP vpmulld, YMM2, YMM1, FSxBX
588 %if TMPL_BITS == 64
589EMIT_INSTR_PLUS_ICEBP vpmulld, YMM10, YMM8, YMM15
590EMIT_INSTR_PLUS_ICEBP vpmulld, YMM10, YMM8, FSxBX
591 %endif
592
593;
594; [V]PMULHW
595;
596EMIT_INSTR_PLUS_ICEBP pmulhw, MM1, MM2
597EMIT_INSTR_PLUS_ICEBP pmulhw, MM1, FSxBX
598
599EMIT_INSTR_PLUS_ICEBP pmulhw, XMM1, XMM2
600EMIT_INSTR_PLUS_ICEBP pmulhw, XMM1, FSxBX
601 %if TMPL_BITS == 64
602EMIT_INSTR_PLUS_ICEBP pmulhw, XMM8, XMM9
603EMIT_INSTR_PLUS_ICEBP pmulhw, XMM8, FSxBX
604 %endif
605
606EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM1, XMM1, XMM2
607EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM1, XMM1, FSxBX
608 %if TMPL_BITS == 64
609EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM8, XMM9, XMM10
610EMIT_INSTR_PLUS_ICEBP vpmulhw, XMM8, XMM9, FSxBX
611 %endif
612
613EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM1, YMM1, YMM2
614EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM1, YMM1, FSxBX
615 %if TMPL_BITS == 64
616EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM8, YMM9, YMM10
617EMIT_INSTR_PLUS_ICEBP vpmulhw, YMM8, YMM9, FSxBX
618 %endif
619
620;
621; [V]PMULHUW
622;
623EMIT_INSTR_PLUS_ICEBP pmulhuw, MM1, MM2
624EMIT_INSTR_PLUS_ICEBP pmulhuw, MM1, FSxBX
625
626EMIT_INSTR_PLUS_ICEBP pmulhuw, XMM1, XMM2
627EMIT_INSTR_PLUS_ICEBP pmulhuw, XMM1, FSxBX
628 %if TMPL_BITS == 64
629EMIT_INSTR_PLUS_ICEBP pmulhuw, XMM8, XMM9
630EMIT_INSTR_PLUS_ICEBP pmulhuw, XMM8, FSxBX
631 %endif
632
633EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM1, XMM1, XMM2
634EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM1, XMM1, FSxBX
635 %if TMPL_BITS == 64
636EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM8, XMM9, XMM10
637EMIT_INSTR_PLUS_ICEBP vpmulhuw, XMM8, XMM9, FSxBX
638 %endif
639
640EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM1, YMM1, YMM2
641EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM1, YMM1, FSxBX
642 %if TMPL_BITS == 64
643EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM8, YMM9, YMM10
644EMIT_INSTR_PLUS_ICEBP vpmulhuw, YMM8, YMM9, FSxBX
645 %endif
646
647;
648; [V]PSHUFB
649;
650EMIT_INSTR_PLUS_ICEBP pshufb, MM1, MM2
651EMIT_INSTR_PLUS_ICEBP pshufb, MM1, FSxBX
652
653EMIT_INSTR_PLUS_ICEBP pshufb, XMM1, XMM2
654EMIT_INSTR_PLUS_ICEBP pshufb, XMM1, FSxBX
655 %if TMPL_BITS == 64
656EMIT_INSTR_PLUS_ICEBP pshufb, XMM8, XMM9
657EMIT_INSTR_PLUS_ICEBP pshufb, XMM8, FSxBX
658 %endif
659
660EMIT_INSTR_PLUS_ICEBP vpshufb, XMM1, XMM2, XMM3
661EMIT_INSTR_PLUS_ICEBP vpshufb, XMM1, XMM2, FSxBX
662 %if TMPL_BITS == 64
663EMIT_INSTR_PLUS_ICEBP vpshufb, XMM8, XMM9, XMM10
664EMIT_INSTR_PLUS_ICEBP vpshufb, XMM8, XMM9, FSxBX
665 %endif
666
667EMIT_INSTR_PLUS_ICEBP vpshufb, YMM1, YMM2, YMM3
668EMIT_INSTR_PLUS_ICEBP vpshufb, YMM1, YMM2, FSxBX
669 %if TMPL_BITS == 64
670EMIT_INSTR_PLUS_ICEBP vpshufb, YMM8, YMM9, YMM10
671EMIT_INSTR_PLUS_ICEBP vpshufb, YMM8, YMM9, FSxBX
672 %endif
673
674;
675; PSHUFW
676;
677EMIT_INSTR_PLUS_ICEBP pshufw, MM1, MM2, 0FFh ; FF = top src word in all destination words
678EMIT_INSTR_PLUS_ICEBP pshufw, MM1, FSxBX, 0FFh
679EMIT_INSTR_PLUS_ICEBP pshufw, MM1, MM2, 01Bh ; 1B = word swap (like bswap but for words)
680EMIT_INSTR_PLUS_ICEBP pshufw, MM1, FSxBX, 01Bh
681
682;
683; [V]PSHUFHW
684;
685EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, XMM2, 0FFh
686EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, FSxBX, 0FFh
687EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, XMM2, 01Bh
688EMIT_INSTR_PLUS_ICEBP pshufhw, XMM1, FSxBX, 01Bh
689
690EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, XMM2, 0FFh
691EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, FSxBX, 0FFh
692EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, XMM2, 01Bh
693EMIT_INSTR_PLUS_ICEBP vpshufhw, XMM1, FSxBX, 01Bh
694
695EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, YMM2, 0FFh
696EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, FSxBX, 0FFh
697EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, YMM2, 01Bh
698EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM1, FSxBX, 01Bh
699
700 %if TMPL_BITS == 64
701EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM12, YMM7, 0FFh
702EMIT_INSTR_PLUS_ICEBP vpshufhw, YMM9, YMM12, 01Bh
703 %endif
704
705;
706; [V]PSHUFLW
707;
708EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, XMM2, 0FFh
709EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, FSxBX, 0FFh
710EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, XMM2, 01Bh
711EMIT_INSTR_PLUS_ICEBP pshuflw, XMM1, FSxBX, 01Bh
712
713EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, XMM2, 0FFh
714EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, FSxBX, 0FFh
715EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, XMM2, 01Bh
716EMIT_INSTR_PLUS_ICEBP vpshuflw, XMM1, FSxBX, 01Bh
717
718EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, YMM2, 0FFh
719EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, FSxBX, 0FFh
720EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, YMM2, 01Bh
721EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM1, FSxBX, 01Bh
722
723 %if TMPL_BITS == 64
724EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM12, YMM7, 0FFh
725EMIT_INSTR_PLUS_ICEBP vpshuflw, YMM9, YMM12, 01Bh
726 %endif
727
728;
729; [V]PSHUFD
730;
731EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, XMM2, 0FFh
732EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, FSxBX, 0FFh
733EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, XMM2, 01Bh
734EMIT_INSTR_PLUS_ICEBP pshufd, XMM1, FSxBX, 01Bh
735
736EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, XMM2, 0FFh
737EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, FSxBX, 0FFh
738EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, XMM2, 01Bh
739EMIT_INSTR_PLUS_ICEBP vpshufd, XMM1, FSxBX, 01Bh
740
741EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, YMM2, 0FFh
742EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, FSxBX, 0FFh
743EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, YMM2, 01Bh
744EMIT_INSTR_PLUS_ICEBP vpshufd, YMM1, FSxBX, 01Bh
745
746 %if TMPL_BITS == 64
747EMIT_INSTR_PLUS_ICEBP vpshufd, YMM12, YMM7, 0FFh
748EMIT_INSTR_PLUS_ICEBP vpshufd, YMM9, YMM12, 01Bh
749 %endif
750
751;
752; [V]PUNPCKHBW
753;
754EMIT_INSTR_PLUS_ICEBP punpckhbw, MM1, MM2
755EMIT_INSTR_PLUS_ICEBP punpckhbw, MM1, FSxBX
756
757EMIT_INSTR_PLUS_ICEBP punpckhbw, XMM1, XMM2
758EMIT_INSTR_PLUS_ICEBP punpckhbw, XMM1, FSxBX
759 %if TMPL_BITS == 64
760EMIT_INSTR_PLUS_ICEBP punpckhbw, XMM8, XMM9
761EMIT_INSTR_PLUS_ICEBP punpckhbw, XMM8, FSxBX
762 %endif
763
764EMIT_INSTR_PLUS_ICEBP vpunpckhbw, XMM1, XMM2, XMM3
765EMIT_INSTR_PLUS_ICEBP vpunpckhbw, XMM1, XMM2, FSxBX
766 %if TMPL_BITS == 64
767EMIT_INSTR_PLUS_ICEBP vpunpckhbw, XMM8, XMM9, XMM10
768EMIT_INSTR_PLUS_ICEBP vpunpckhbw, XMM8, XMM9, FSxBX
769 %endif
770
771EMIT_INSTR_PLUS_ICEBP vpunpckhbw, YMM1, YMM2, YMM3
772EMIT_INSTR_PLUS_ICEBP vpunpckhbw, YMM1, YMM2, FSxBX
773 %if TMPL_BITS == 64
774EMIT_INSTR_PLUS_ICEBP vpunpckhbw, YMM8, YMM9, YMM10
775EMIT_INSTR_PLUS_ICEBP vpunpckhbw, YMM8, YMM9, FSxBX
776 %endif
777
778;
779; [V]PUNPCKHWD
780;
781EMIT_INSTR_PLUS_ICEBP punpckhwd, MM1, MM2
782EMIT_INSTR_PLUS_ICEBP punpckhwd, MM1, FSxBX
783
784EMIT_INSTR_PLUS_ICEBP punpckhwd, XMM1, XMM2
785EMIT_INSTR_PLUS_ICEBP punpckhwd, XMM1, FSxBX
786 %if TMPL_BITS == 64
787EMIT_INSTR_PLUS_ICEBP punpckhwd, XMM8, XMM9
788EMIT_INSTR_PLUS_ICEBP punpckhwd, XMM8, FSxBX
789 %endif
790
791EMIT_INSTR_PLUS_ICEBP vpunpckhwd, XMM1, XMM2, XMM3
792EMIT_INSTR_PLUS_ICEBP vpunpckhwd, XMM1, XMM2, FSxBX
793 %if TMPL_BITS == 64
794EMIT_INSTR_PLUS_ICEBP vpunpckhwd, XMM8, XMM9, XMM10
795EMIT_INSTR_PLUS_ICEBP vpunpckhwd, XMM8, XMM9, FSxBX
796 %endif
797
798EMIT_INSTR_PLUS_ICEBP vpunpckhwd, YMM1, YMM2, YMM3
799EMIT_INSTR_PLUS_ICEBP vpunpckhwd, YMM1, YMM2, FSxBX
800 %if TMPL_BITS == 64
801EMIT_INSTR_PLUS_ICEBP vpunpckhwd, YMM8, YMM9, YMM10
802EMIT_INSTR_PLUS_ICEBP vpunpckhwd, YMM8, YMM9, FSxBX
803 %endif
804
805;
806; [V]PUNPCKHDQ
807;
808EMIT_INSTR_PLUS_ICEBP punpckhdq, MM1, MM2
809EMIT_INSTR_PLUS_ICEBP punpckhdq, MM1, FSxBX
810
811EMIT_INSTR_PLUS_ICEBP punpckhdq, XMM1, XMM2
812EMIT_INSTR_PLUS_ICEBP punpckhdq, XMM1, FSxBX
813 %if TMPL_BITS == 64
814EMIT_INSTR_PLUS_ICEBP punpckhdq, XMM8, XMM9
815EMIT_INSTR_PLUS_ICEBP punpckhdq, XMM8, FSxBX
816 %endif
817
818EMIT_INSTR_PLUS_ICEBP vpunpckhdq, XMM1, XMM2, XMM3
819EMIT_INSTR_PLUS_ICEBP vpunpckhdq, XMM1, XMM2, FSxBX
820 %if TMPL_BITS == 64
821EMIT_INSTR_PLUS_ICEBP vpunpckhdq, XMM8, XMM9, XMM10
822EMIT_INSTR_PLUS_ICEBP vpunpckhdq, XMM8, XMM9, FSxBX
823 %endif
824
825EMIT_INSTR_PLUS_ICEBP vpunpckhdq, YMM1, YMM2, YMM3
826EMIT_INSTR_PLUS_ICEBP vpunpckhdq, YMM1, YMM2, FSxBX
827 %if TMPL_BITS == 64
828EMIT_INSTR_PLUS_ICEBP vpunpckhdq, YMM8, YMM9, YMM10
829EMIT_INSTR_PLUS_ICEBP vpunpckhdq, YMM8, YMM9, FSxBX
830 %endif
831
832;
833; [V]PUNPCKHQDQ (no MMX)
834;
835EMIT_INSTR_PLUS_ICEBP punpckhqdq, XMM1, XMM2
836EMIT_INSTR_PLUS_ICEBP punpckhqdq, XMM1, FSxBX
837 %if TMPL_BITS == 64
838EMIT_INSTR_PLUS_ICEBP punpckhqdq, XMM8, XMM9
839EMIT_INSTR_PLUS_ICEBP punpckhqdq, XMM8, FSxBX
840 %endif
841
842EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, XMM1, XMM2, XMM3
843EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, XMM1, XMM2, FSxBX
844 %if TMPL_BITS == 64
845EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, XMM8, XMM9, XMM10
846EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, XMM8, XMM9, FSxBX
847 %endif
848
849EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, YMM1, YMM2, YMM3
850EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, YMM1, YMM2, FSxBX
851 %if TMPL_BITS == 64
852EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, YMM8, YMM9, YMM10
853EMIT_INSTR_PLUS_ICEBP vpunpckhqdq, YMM8, YMM9, FSxBX
854 %endif
855
856;
857; [V]PUNPCKLBW
858;
859EMIT_INSTR_PLUS_ICEBP punpcklbw, MM1, MM2
860EMIT_INSTR_PLUS_ICEBP punpcklbw, MM1, FSxBX
861
862EMIT_INSTR_PLUS_ICEBP punpcklbw, XMM1, XMM2
863EMIT_INSTR_PLUS_ICEBP punpcklbw, XMM1, FSxBX
864 %if TMPL_BITS == 64
865EMIT_INSTR_PLUS_ICEBP punpcklbw, XMM8, XMM9
866EMIT_INSTR_PLUS_ICEBP punpcklbw, XMM8, FSxBX
867 %endif
868
869EMIT_INSTR_PLUS_ICEBP vpunpcklbw, XMM1, XMM2, XMM3
870EMIT_INSTR_PLUS_ICEBP vpunpcklbw, XMM1, XMM2, FSxBX
871 %if TMPL_BITS == 64
872EMIT_INSTR_PLUS_ICEBP vpunpcklbw, XMM8, XMM9, XMM10
873EMIT_INSTR_PLUS_ICEBP vpunpcklbw, XMM8, XMM9, FSxBX
874 %endif
875
876EMIT_INSTR_PLUS_ICEBP vpunpcklbw, YMM1, YMM2, YMM3
877EMIT_INSTR_PLUS_ICEBP vpunpcklbw, YMM1, YMM2, FSxBX
878 %if TMPL_BITS == 64
879EMIT_INSTR_PLUS_ICEBP vpunpcklbw, YMM8, YMM9, YMM10
880EMIT_INSTR_PLUS_ICEBP vpunpcklbw, YMM8, YMM9, FSxBX
881 %endif
882
883;
884; [V]PUNPCKLWD
885;
886EMIT_INSTR_PLUS_ICEBP punpcklwd, MM1, MM2
887EMIT_INSTR_PLUS_ICEBP punpcklwd, MM1, FSxBX
888
889EMIT_INSTR_PLUS_ICEBP punpcklwd, XMM1, XMM2
890EMIT_INSTR_PLUS_ICEBP punpcklwd, XMM1, FSxBX
891 %if TMPL_BITS == 64
892EMIT_INSTR_PLUS_ICEBP punpcklwd, XMM8, XMM9
893EMIT_INSTR_PLUS_ICEBP punpcklwd, XMM8, FSxBX
894 %endif
895
896EMIT_INSTR_PLUS_ICEBP vpunpcklwd, XMM1, XMM2, XMM3
897EMIT_INSTR_PLUS_ICEBP vpunpcklwd, XMM1, XMM2, FSxBX
898 %if TMPL_BITS == 64
899EMIT_INSTR_PLUS_ICEBP vpunpcklwd, XMM8, XMM9, XMM10
900EMIT_INSTR_PLUS_ICEBP vpunpcklwd, XMM8, XMM9, FSxBX
901 %endif
902
903EMIT_INSTR_PLUS_ICEBP vpunpcklwd, YMM1, YMM2, YMM3
904EMIT_INSTR_PLUS_ICEBP vpunpcklwd, YMM1, YMM2, FSxBX
905 %if TMPL_BITS == 64
906EMIT_INSTR_PLUS_ICEBP vpunpcklwd, YMM8, YMM9, YMM10
907EMIT_INSTR_PLUS_ICEBP vpunpcklwd, YMM8, YMM9, FSxBX
908 %endif
909
910;
911; [V]PUNPCKLDQ
912;
913EMIT_INSTR_PLUS_ICEBP punpckldq, MM1, MM2
914EMIT_INSTR_PLUS_ICEBP punpckldq, MM1, FSxBX
915
916EMIT_INSTR_PLUS_ICEBP punpckldq, XMM1, XMM2
917EMIT_INSTR_PLUS_ICEBP punpckldq, XMM1, FSxBX
918 %if TMPL_BITS == 64
919EMIT_INSTR_PLUS_ICEBP punpckldq, XMM8, XMM9
920EMIT_INSTR_PLUS_ICEBP punpckldq, XMM8, FSxBX
921 %endif
922
923EMIT_INSTR_PLUS_ICEBP vpunpckldq, XMM1, XMM2, XMM3
924EMIT_INSTR_PLUS_ICEBP vpunpckldq, XMM1, XMM2, FSxBX
925 %if TMPL_BITS == 64
926EMIT_INSTR_PLUS_ICEBP vpunpckldq, XMM8, XMM9, XMM10
927EMIT_INSTR_PLUS_ICEBP vpunpckldq, XMM8, XMM9, FSxBX
928 %endif
929
930EMIT_INSTR_PLUS_ICEBP vpunpckldq, YMM1, YMM2, YMM3
931EMIT_INSTR_PLUS_ICEBP vpunpckldq, YMM1, YMM2, FSxBX
932 %if TMPL_BITS == 64
933EMIT_INSTR_PLUS_ICEBP vpunpckldq, YMM8, YMM9, YMM10
934EMIT_INSTR_PLUS_ICEBP vpunpckldq, YMM8, YMM9, FSxBX
935 %endif
936
937;
938; [V]PUNPCKLQDQ (no MMX)
939;
940EMIT_INSTR_PLUS_ICEBP punpcklqdq, XMM1, XMM2
941EMIT_INSTR_PLUS_ICEBP punpcklqdq, XMM1, FSxBX
942 %if TMPL_BITS == 64
943EMIT_INSTR_PLUS_ICEBP punpcklqdq, XMM8, XMM9
944EMIT_INSTR_PLUS_ICEBP punpcklqdq, XMM8, FSxBX
945 %endif
946
947EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, XMM1, XMM2, XMM3
948EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, XMM1, XMM2, FSxBX
949 %if TMPL_BITS == 64
950EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, XMM8, XMM9, XMM10
951EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, XMM8, XMM9, FSxBX
952 %endif
953
954EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, YMM1, YMM2, YMM3
955EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, YMM1, YMM2, FSxBX
956 %if TMPL_BITS == 64
957EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, YMM8, YMM9, YMM10
958EMIT_INSTR_PLUS_ICEBP vpunpcklqdq, YMM8, YMM9, FSxBX
959 %endif
960
961;
962; [V]PACKSSWB
963;
964EMIT_INSTR_PLUS_ICEBP packsswb, MM1, MM2
965EMIT_INSTR_PLUS_ICEBP packsswb, MM1, FSxBX
966
967EMIT_INSTR_PLUS_ICEBP packsswb, XMM1, XMM2
968EMIT_INSTR_PLUS_ICEBP packsswb, XMM1, FSxBX
969 %if TMPL_BITS == 64
970EMIT_INSTR_PLUS_ICEBP packsswb, XMM8, XMM9
971EMIT_INSTR_PLUS_ICEBP packsswb, XMM8, FSxBX
972 %endif
973
974EMIT_INSTR_PLUS_ICEBP vpacksswb, XMM1, XMM2, XMM3
975EMIT_INSTR_PLUS_ICEBP vpacksswb, XMM1, XMM2, FSxBX
976 %if TMPL_BITS == 64
977EMIT_INSTR_PLUS_ICEBP vpacksswb, XMM8, XMM9, XMM10
978EMIT_INSTR_PLUS_ICEBP vpacksswb, XMM8, XMM9, FSxBX
979 %endif
980
981EMIT_INSTR_PLUS_ICEBP vpacksswb, YMM1, YMM2, YMM3
982EMIT_INSTR_PLUS_ICEBP vpacksswb, YMM1, YMM2, FSxBX
983 %if TMPL_BITS == 64
984EMIT_INSTR_PLUS_ICEBP vpacksswb, YMM8, YMM9, YMM10
985EMIT_INSTR_PLUS_ICEBP vpacksswb, YMM8, YMM9, FSxBX
986 %endif
987
988;
989; [V]PACKSSWD
990;
991EMIT_INSTR_PLUS_ICEBP packssdw, MM1, MM2
992EMIT_INSTR_PLUS_ICEBP packssdw, MM1, FSxBX
993
994EMIT_INSTR_PLUS_ICEBP packssdw, XMM1, XMM2
995EMIT_INSTR_PLUS_ICEBP packssdw, XMM1, FSxBX
996 %if TMPL_BITS == 64
997EMIT_INSTR_PLUS_ICEBP packssdw, XMM8, XMM9
998EMIT_INSTR_PLUS_ICEBP packssdw, XMM8, FSxBX
999 %endif
1000
1001EMIT_INSTR_PLUS_ICEBP vpackssdw, XMM1, XMM2, XMM3
1002EMIT_INSTR_PLUS_ICEBP vpackssdw, XMM1, XMM2, FSxBX
1003 %if TMPL_BITS == 64
1004EMIT_INSTR_PLUS_ICEBP vpackssdw, XMM8, XMM9, XMM10
1005EMIT_INSTR_PLUS_ICEBP vpackssdw, XMM8, XMM9, FSxBX
1006 %endif
1007
1008EMIT_INSTR_PLUS_ICEBP vpackssdw, YMM1, YMM2, YMM3
1009EMIT_INSTR_PLUS_ICEBP vpackssdw, YMM1, YMM2, FSxBX
1010 %if TMPL_BITS == 64
1011EMIT_INSTR_PLUS_ICEBP vpackssdw, YMM8, YMM9, YMM10
1012EMIT_INSTR_PLUS_ICEBP vpackssdw, YMM8, YMM9, FSxBX
1013 %endif
1014
1015;
1016; [V]PACKUSWB
1017;
1018EMIT_INSTR_PLUS_ICEBP packuswb, MM1, MM2
1019EMIT_INSTR_PLUS_ICEBP packuswb, MM1, FSxBX
1020
1021EMIT_INSTR_PLUS_ICEBP packuswb, XMM1, XMM2
1022EMIT_INSTR_PLUS_ICEBP packuswb, XMM1, FSxBX
1023 %if TMPL_BITS == 64
1024EMIT_INSTR_PLUS_ICEBP packuswb, XMM8, XMM9
1025EMIT_INSTR_PLUS_ICEBP packuswb, XMM8, FSxBX
1026 %endif
1027
1028EMIT_INSTR_PLUS_ICEBP vpackuswb, XMM1, XMM2, XMM3
1029EMIT_INSTR_PLUS_ICEBP vpackuswb, XMM1, XMM2, FSxBX
1030 %if TMPL_BITS == 64
1031EMIT_INSTR_PLUS_ICEBP vpackuswb, XMM8, XMM9, XMM10
1032EMIT_INSTR_PLUS_ICEBP vpackuswb, XMM8, XMM9, FSxBX
1033 %endif
1034
1035EMIT_INSTR_PLUS_ICEBP vpackuswb, YMM1, YMM2, YMM3
1036EMIT_INSTR_PLUS_ICEBP vpackuswb, YMM1, YMM2, FSxBX
1037 %if TMPL_BITS == 64
1038EMIT_INSTR_PLUS_ICEBP vpackuswb, YMM8, YMM9, YMM10
1039EMIT_INSTR_PLUS_ICEBP vpackuswb, YMM8, YMM9, FSxBX
1040 %endif
1041
1042;
1043; [V]PACKUSWD (no MMX)
1044;
1045EMIT_INSTR_PLUS_ICEBP packusdw, XMM1, XMM2
1046EMIT_INSTR_PLUS_ICEBP packusdw, XMM1, FSxBX
1047 %if TMPL_BITS == 64
1048EMIT_INSTR_PLUS_ICEBP packusdw, XMM8, XMM9
1049EMIT_INSTR_PLUS_ICEBP packusdw, XMM8, FSxBX
1050 %endif
1051
1052EMIT_INSTR_PLUS_ICEBP vpackusdw, XMM1, XMM2, XMM3
1053EMIT_INSTR_PLUS_ICEBP vpackusdw, XMM1, XMM2, FSxBX
1054 %if TMPL_BITS == 64
1055EMIT_INSTR_PLUS_ICEBP vpackusdw, XMM8, XMM9, XMM10
1056EMIT_INSTR_PLUS_ICEBP vpackusdw, XMM8, XMM9, FSxBX
1057 %endif
1058
1059EMIT_INSTR_PLUS_ICEBP vpackusdw, YMM1, YMM2, YMM3
1060EMIT_INSTR_PLUS_ICEBP vpackusdw, YMM1, YMM2, FSxBX
1061 %if TMPL_BITS == 64
1062EMIT_INSTR_PLUS_ICEBP vpackusdw, YMM8, YMM9, YMM10
1063EMIT_INSTR_PLUS_ICEBP vpackusdw, YMM8, YMM9, FSxBX
1064 %endif
1065
1066;
1067; [V]PMAXUB
1068;
1069EMIT_INSTR_PLUS_ICEBP pmaxub, MM1, MM2
1070EMIT_INSTR_PLUS_ICEBP pmaxub, MM1, FSxBX
1071
1072EMIT_INSTR_PLUS_ICEBP pmaxub, XMM1, XMM2
1073EMIT_INSTR_PLUS_ICEBP pmaxub, XMM1, FSxBX
1074 %if TMPL_BITS == 64
1075EMIT_INSTR_PLUS_ICEBP pmaxub, XMM8, XMM9
1076EMIT_INSTR_PLUS_ICEBP pmaxub, XMM8, FSxBX
1077 %endif
1078
1079EMIT_INSTR_PLUS_ICEBP vpmaxub, XMM1, XMM2, XMM3
1080EMIT_INSTR_PLUS_ICEBP vpmaxub, XMM1, XMM2, FSxBX
1081 %if TMPL_BITS == 64
1082EMIT_INSTR_PLUS_ICEBP vpmaxub, XMM8, XMM9, XMM10
1083EMIT_INSTR_PLUS_ICEBP vpmaxub, XMM8, XMM9, FSxBX
1084 %endif
1085
1086EMIT_INSTR_PLUS_ICEBP vpmaxub, YMM1, YMM2, YMM3
1087EMIT_INSTR_PLUS_ICEBP vpmaxub, YMM1, YMM2, FSxBX
1088 %if TMPL_BITS == 64
1089EMIT_INSTR_PLUS_ICEBP vpmaxub, YMM8, YMM9, YMM10
1090EMIT_INSTR_PLUS_ICEBP vpmaxub, YMM8, YMM9, FSxBX
1091 %endif
1092
1093;
1094; [V]PMAXUW
1095;
1096EMIT_INSTR_PLUS_ICEBP pmaxuw, XMM1, XMM2
1097EMIT_INSTR_PLUS_ICEBP pmaxuw, XMM1, FSxBX
1098 %if TMPL_BITS == 64
1099EMIT_INSTR_PLUS_ICEBP pmaxuw, XMM8, XMM9
1100EMIT_INSTR_PLUS_ICEBP pmaxuw, XMM8, FSxBX
1101 %endif
1102
1103EMIT_INSTR_PLUS_ICEBP vpmaxuw, XMM1, XMM2, XMM3
1104EMIT_INSTR_PLUS_ICEBP vpmaxuw, XMM1, XMM2, FSxBX
1105 %if TMPL_BITS == 64
1106EMIT_INSTR_PLUS_ICEBP vpmaxuw, XMM8, XMM9, XMM10
1107EMIT_INSTR_PLUS_ICEBP vpmaxuw, XMM8, XMM9, FSxBX
1108 %endif
1109
1110EMIT_INSTR_PLUS_ICEBP vpmaxuw, YMM1, YMM2, YMM3
1111EMIT_INSTR_PLUS_ICEBP vpmaxuw, YMM1, YMM2, FSxBX
1112 %if TMPL_BITS == 64
1113EMIT_INSTR_PLUS_ICEBP vpmaxuw, YMM8, YMM9, YMM10
1114EMIT_INSTR_PLUS_ICEBP vpmaxuw, YMM8, YMM9, FSxBX
1115 %endif
1116
1117;
1118; [V]PMAXUD
1119;
1120EMIT_INSTR_PLUS_ICEBP pmaxud, XMM1, XMM2
1121EMIT_INSTR_PLUS_ICEBP pmaxud, XMM1, FSxBX
1122 %if TMPL_BITS == 64
1123EMIT_INSTR_PLUS_ICEBP pmaxud, XMM8, XMM9
1124EMIT_INSTR_PLUS_ICEBP pmaxud, XMM8, FSxBX
1125 %endif
1126
1127EMIT_INSTR_PLUS_ICEBP vpmaxud, XMM1, XMM2, XMM3
1128EMIT_INSTR_PLUS_ICEBP vpmaxud, XMM1, XMM2, FSxBX
1129 %if TMPL_BITS == 64
1130EMIT_INSTR_PLUS_ICEBP vpmaxud, XMM8, XMM9, XMM10
1131EMIT_INSTR_PLUS_ICEBP vpmaxud, XMM8, XMM9, FSxBX
1132 %endif
1133
1134EMIT_INSTR_PLUS_ICEBP vpmaxud, YMM1, YMM2, YMM3
1135EMIT_INSTR_PLUS_ICEBP vpmaxud, YMM1, YMM2, FSxBX
1136 %if TMPL_BITS == 64
1137EMIT_INSTR_PLUS_ICEBP vpmaxud, YMM8, YMM9, YMM10
1138EMIT_INSTR_PLUS_ICEBP vpmaxud, YMM8, YMM9, FSxBX
1139 %endif
1140
1141;
1142; [V]PMAXSB
1143;
1144EMIT_INSTR_PLUS_ICEBP pmaxsb, XMM1, XMM2
1145EMIT_INSTR_PLUS_ICEBP pmaxsb, XMM1, FSxBX
1146 %if TMPL_BITS == 64
1147EMIT_INSTR_PLUS_ICEBP pmaxsb, XMM8, XMM9
1148EMIT_INSTR_PLUS_ICEBP pmaxsb, XMM8, FSxBX
1149 %endif
1150
1151EMIT_INSTR_PLUS_ICEBP vpmaxsb, XMM1, XMM2, XMM3
1152EMIT_INSTR_PLUS_ICEBP vpmaxsb, XMM1, XMM2, FSxBX
1153 %if TMPL_BITS == 64
1154EMIT_INSTR_PLUS_ICEBP vpmaxsb, XMM8, XMM9, XMM10
1155EMIT_INSTR_PLUS_ICEBP vpmaxsb, XMM8, XMM9, FSxBX
1156 %endif
1157
1158EMIT_INSTR_PLUS_ICEBP vpmaxsb, YMM1, YMM2, YMM3
1159EMIT_INSTR_PLUS_ICEBP vpmaxsb, YMM1, YMM2, FSxBX
1160 %if TMPL_BITS == 64
1161EMIT_INSTR_PLUS_ICEBP vpmaxsb, YMM8, YMM9, YMM10
1162EMIT_INSTR_PLUS_ICEBP vpmaxsb, YMM8, YMM9, FSxBX
1163 %endif
1164
1165;
1166; [V]PMAXSW
1167;
1168EMIT_INSTR_PLUS_ICEBP pmaxsw, MM1, MM2
1169EMIT_INSTR_PLUS_ICEBP pmaxsw, MM1, FSxBX
1170
1171EMIT_INSTR_PLUS_ICEBP pmaxsw, XMM1, XMM2
1172EMIT_INSTR_PLUS_ICEBP pmaxsw, XMM1, FSxBX
1173 %if TMPL_BITS == 64
1174EMIT_INSTR_PLUS_ICEBP pmaxsw, XMM8, XMM9
1175EMIT_INSTR_PLUS_ICEBP pmaxsw, XMM8, FSxBX
1176 %endif
1177
1178EMIT_INSTR_PLUS_ICEBP vpmaxsw, XMM1, XMM2, XMM3
1179EMIT_INSTR_PLUS_ICEBP vpmaxsw, XMM1, XMM2, FSxBX
1180 %if TMPL_BITS == 64
1181EMIT_INSTR_PLUS_ICEBP vpmaxsw, XMM8, XMM9, XMM10
1182EMIT_INSTR_PLUS_ICEBP vpmaxsw, XMM8, XMM9, FSxBX
1183 %endif
1184
1185EMIT_INSTR_PLUS_ICEBP vpmaxsw, YMM1, YMM2, YMM3
1186EMIT_INSTR_PLUS_ICEBP vpmaxsw, YMM1, YMM2, FSxBX
1187 %if TMPL_BITS == 64
1188EMIT_INSTR_PLUS_ICEBP vpmaxsw, YMM8, YMM9, YMM10
1189EMIT_INSTR_PLUS_ICEBP vpmaxsw, YMM8, YMM9, FSxBX
1190 %endif
1191
1192;
1193; [V]PMAXSD
1194;
1195EMIT_INSTR_PLUS_ICEBP pmaxsd, XMM1, XMM2
1196EMIT_INSTR_PLUS_ICEBP pmaxsd, XMM1, FSxBX
1197 %if TMPL_BITS == 64
1198EMIT_INSTR_PLUS_ICEBP pmaxsd, XMM8, XMM9
1199EMIT_INSTR_PLUS_ICEBP pmaxsd, XMM8, FSxBX
1200 %endif
1201
1202EMIT_INSTR_PLUS_ICEBP vpmaxsd, XMM1, XMM2, XMM3
1203EMIT_INSTR_PLUS_ICEBP vpmaxsd, XMM1, XMM2, FSxBX
1204 %if TMPL_BITS == 64
1205EMIT_INSTR_PLUS_ICEBP vpmaxsd, XMM8, XMM9, XMM10
1206EMIT_INSTR_PLUS_ICEBP vpmaxsd, XMM8, XMM9, FSxBX
1207 %endif
1208
1209EMIT_INSTR_PLUS_ICEBP vpmaxsd, YMM1, YMM2, YMM3
1210EMIT_INSTR_PLUS_ICEBP vpmaxsd, YMM1, YMM2, FSxBX
1211 %if TMPL_BITS == 64
1212EMIT_INSTR_PLUS_ICEBP vpmaxsd, YMM8, YMM9, YMM10
1213EMIT_INSTR_PLUS_ICEBP vpmaxsd, YMM8, YMM9, FSxBX
1214 %endif
1215
1216;
1217; [V]PMINUB
1218;
1219EMIT_INSTR_PLUS_ICEBP pminub, MM1, MM2
1220EMIT_INSTR_PLUS_ICEBP pminub, MM1, FSxBX
1221
1222EMIT_INSTR_PLUS_ICEBP pminub, XMM1, XMM2
1223EMIT_INSTR_PLUS_ICEBP pminub, XMM1, FSxBX
1224 %if TMPL_BITS == 64
1225EMIT_INSTR_PLUS_ICEBP pminub, XMM8, XMM9
1226EMIT_INSTR_PLUS_ICEBP pminub, XMM8, FSxBX
1227 %endif
1228
1229EMIT_INSTR_PLUS_ICEBP vpminub, XMM1, XMM2, XMM3
1230EMIT_INSTR_PLUS_ICEBP vpminub, XMM1, XMM2, FSxBX
1231 %if TMPL_BITS == 64
1232EMIT_INSTR_PLUS_ICEBP vpminub, XMM8, XMM9, XMM10
1233EMIT_INSTR_PLUS_ICEBP vpminub, XMM8, XMM9, FSxBX
1234 %endif
1235
1236EMIT_INSTR_PLUS_ICEBP vpminub, YMM1, YMM2, YMM3
1237EMIT_INSTR_PLUS_ICEBP vpminub, YMM1, YMM2, FSxBX
1238 %if TMPL_BITS == 64
1239EMIT_INSTR_PLUS_ICEBP vpminub, YMM8, YMM9, YMM10
1240EMIT_INSTR_PLUS_ICEBP vpminub, YMM8, YMM9, FSxBX
1241 %endif
1242
1243;
1244; [V]PMINUW
1245;
1246EMIT_INSTR_PLUS_ICEBP pminuw, XMM1, XMM2
1247EMIT_INSTR_PLUS_ICEBP pminuw, XMM1, FSxBX
1248 %if TMPL_BITS == 64
1249EMIT_INSTR_PLUS_ICEBP pminuw, XMM8, XMM9
1250EMIT_INSTR_PLUS_ICEBP pminuw, XMM8, FSxBX
1251 %endif
1252
1253EMIT_INSTR_PLUS_ICEBP vpminuw, XMM1, XMM2, XMM3
1254EMIT_INSTR_PLUS_ICEBP vpminuw, XMM1, XMM2, FSxBX
1255 %if TMPL_BITS == 64
1256EMIT_INSTR_PLUS_ICEBP vpminuw, XMM8, XMM9, XMM10
1257EMIT_INSTR_PLUS_ICEBP vpminuw, XMM8, XMM9, FSxBX
1258 %endif
1259
1260EMIT_INSTR_PLUS_ICEBP vpminuw, YMM1, YMM2, YMM3
1261EMIT_INSTR_PLUS_ICEBP vpminuw, YMM1, YMM2, FSxBX
1262 %if TMPL_BITS == 64
1263EMIT_INSTR_PLUS_ICEBP vpminuw, YMM8, YMM9, YMM10
1264EMIT_INSTR_PLUS_ICEBP vpminuw, YMM8, YMM9, FSxBX
1265 %endif
1266
1267;
1268; [V]PMINUD
1269;
1270EMIT_INSTR_PLUS_ICEBP pminud, XMM1, XMM2
1271EMIT_INSTR_PLUS_ICEBP pminud, XMM1, FSxBX
1272 %if TMPL_BITS == 64
1273EMIT_INSTR_PLUS_ICEBP pminud, XMM8, XMM9
1274EMIT_INSTR_PLUS_ICEBP pminud, XMM8, FSxBX
1275 %endif
1276
1277EMIT_INSTR_PLUS_ICEBP vpminud, XMM1, XMM2, XMM3
1278EMIT_INSTR_PLUS_ICEBP vpminud, XMM1, XMM2, FSxBX
1279 %if TMPL_BITS == 64
1280EMIT_INSTR_PLUS_ICEBP vpminud, XMM8, XMM9, XMM10
1281EMIT_INSTR_PLUS_ICEBP vpminud, XMM8, XMM9, FSxBX
1282 %endif
1283
1284EMIT_INSTR_PLUS_ICEBP vpminud, YMM1, YMM2, YMM3
1285EMIT_INSTR_PLUS_ICEBP vpminud, YMM1, YMM2, FSxBX
1286 %if TMPL_BITS == 64
1287EMIT_INSTR_PLUS_ICEBP vpminud, YMM8, YMM9, YMM10
1288EMIT_INSTR_PLUS_ICEBP vpminud, YMM8, YMM9, FSxBX
1289 %endif
1290
1291;
1292; [V]PMINSB
1293;
1294EMIT_INSTR_PLUS_ICEBP pminsb, XMM1, XMM2
1295EMIT_INSTR_PLUS_ICEBP pminsb, XMM1, FSxBX
1296 %if TMPL_BITS == 64
1297EMIT_INSTR_PLUS_ICEBP pminsb, XMM8, XMM9
1298EMIT_INSTR_PLUS_ICEBP pminsb, XMM8, FSxBX
1299 %endif
1300
1301EMIT_INSTR_PLUS_ICEBP vpminsb, XMM1, XMM2, XMM3
1302EMIT_INSTR_PLUS_ICEBP vpminsb, XMM1, XMM2, FSxBX
1303 %if TMPL_BITS == 64
1304EMIT_INSTR_PLUS_ICEBP vpminsb, XMM8, XMM9, XMM10
1305EMIT_INSTR_PLUS_ICEBP vpminsb, XMM8, XMM9, FSxBX
1306 %endif
1307
1308EMIT_INSTR_PLUS_ICEBP vpminsb, YMM1, YMM2, YMM3
1309EMIT_INSTR_PLUS_ICEBP vpminsb, YMM1, YMM2, FSxBX
1310 %if TMPL_BITS == 64
1311EMIT_INSTR_PLUS_ICEBP vpminsb, YMM8, YMM9, YMM10
1312EMIT_INSTR_PLUS_ICEBP vpminsb, YMM8, YMM9, FSxBX
1313 %endif
1314
1315;
1316; [V]PMINSW
1317;
1318EMIT_INSTR_PLUS_ICEBP pminsw, MM1, MM2
1319EMIT_INSTR_PLUS_ICEBP pminsw, MM1, FSxBX
1320
1321EMIT_INSTR_PLUS_ICEBP pminsw, XMM1, XMM2
1322EMIT_INSTR_PLUS_ICEBP pminsw, XMM1, FSxBX
1323 %if TMPL_BITS == 64
1324EMIT_INSTR_PLUS_ICEBP pminsw, XMM8, XMM9
1325EMIT_INSTR_PLUS_ICEBP pminsw, XMM8, FSxBX
1326 %endif
1327
1328EMIT_INSTR_PLUS_ICEBP vpminsw, XMM1, XMM2, XMM3
1329EMIT_INSTR_PLUS_ICEBP vpminsw, XMM1, XMM2, FSxBX
1330 %if TMPL_BITS == 64
1331EMIT_INSTR_PLUS_ICEBP vpminsw, XMM8, XMM9, XMM10
1332EMIT_INSTR_PLUS_ICEBP vpminsw, XMM8, XMM9, FSxBX
1333 %endif
1334
1335EMIT_INSTR_PLUS_ICEBP vpminsw, YMM1, YMM2, YMM3
1336EMIT_INSTR_PLUS_ICEBP vpminsw, YMM1, YMM2, FSxBX
1337 %if TMPL_BITS == 64
1338EMIT_INSTR_PLUS_ICEBP vpminsw, YMM8, YMM9, YMM10
1339EMIT_INSTR_PLUS_ICEBP vpminsw, YMM8, YMM9, FSxBX
1340 %endif
1341
1342;
1343; [V]PMINSD
1344;
1345EMIT_INSTR_PLUS_ICEBP pminsd, XMM1, XMM2
1346EMIT_INSTR_PLUS_ICEBP pminsd, XMM1, FSxBX
1347 %if TMPL_BITS == 64
1348EMIT_INSTR_PLUS_ICEBP pminsd, XMM8, XMM9
1349EMIT_INSTR_PLUS_ICEBP pminsd, XMM8, FSxBX
1350 %endif
1351
1352EMIT_INSTR_PLUS_ICEBP vpminsd, XMM1, XMM2, XMM3
1353EMIT_INSTR_PLUS_ICEBP vpminsd, XMM1, XMM2, FSxBX
1354 %if TMPL_BITS == 64
1355EMIT_INSTR_PLUS_ICEBP vpminsd, XMM8, XMM9, XMM10
1356EMIT_INSTR_PLUS_ICEBP vpminsd, XMM8, XMM9, FSxBX
1357 %endif
1358
1359EMIT_INSTR_PLUS_ICEBP vpminsd, YMM1, YMM2, YMM3
1360EMIT_INSTR_PLUS_ICEBP vpminsd, YMM1, YMM2, FSxBX
1361 %if TMPL_BITS == 64
1362EMIT_INSTR_PLUS_ICEBP vpminsd, YMM8, YMM9, YMM10
1363EMIT_INSTR_PLUS_ICEBP vpminsd, YMM8, YMM9, FSxBX
1364 %endif
1365
1366;
1367; [V]MOVNTDQA
1368;
1369EMIT_INSTR_PLUS_ICEBP movntdqa, XMM1, FSxBX
1370EMIT_INSTR_PLUS_ICEBP vmovntdqa, XMM1, FSxBX
1371EMIT_INSTR_PLUS_ICEBP vmovntdqa, YMM1, FSxBX
1372 %if TMPL_BITS == 64
1373EMIT_INSTR_PLUS_ICEBP movntdqa, XMM10, FSxBX
1374EMIT_INSTR_PLUS_ICEBP vmovntdqa, XMM11, FSxBX
1375EMIT_INSTR_PLUS_ICEBP vmovntdqa, YMM12, FSxBX
1376 %endif
1377
1378;
1379; [V]MOVNTDQ
1380;
1381EMIT_INSTR_PLUS_ICEBP movntdq, FSxBX, XMM1
1382EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, XMM1
1383EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, YMM1
1384 %if TMPL_BITS == 64
1385EMIT_INSTR_PLUS_ICEBP movntdq, FSxBX, XMM10
1386EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, XMM10
1387EMIT_INSTR_PLUS_ICEBP vmovntdq, FSxBX, YMM10
1388 %endif
1389
1390
1391;
1392; [V]MOVNTPS
1393;
1394EMIT_INSTR_PLUS_ICEBP movntps, FSxBX, XMM1
1395EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, XMM1
1396EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, YMM1
1397 %if TMPL_BITS == 64
1398EMIT_INSTR_PLUS_ICEBP movntps, FSxBX, XMM10
1399EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, XMM11
1400EMIT_INSTR_PLUS_ICEBP vmovntps, FSxBX, YMM12
1401 %endif
1402
1403;
1404; [V]MOVNTPD
1405;
1406EMIT_INSTR_PLUS_ICEBP movntpd, FSxBX, XMM1
1407EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, XMM1
1408EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, YMM1
1409 %if TMPL_BITS == 64
1410EMIT_INSTR_PLUS_ICEBP movntpd, FSxBX, XMM10
1411EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, XMM11
1412EMIT_INSTR_PLUS_ICEBP vmovntpd, FSxBX, YMM12
1413 %endif
1414
1415;
1416; [V]MOVUPS - not testing the 2nd register variant.
1417;
1418EMIT_INSTR_PLUS_ICEBP movups, XMM1, XMM2
1419EMIT_INSTR_PLUS_ICEBP movups, XMM1, FSxBX
1420EMIT_INSTR_PLUS_ICEBP movups, FSxBX, XMM1
1421EMIT_INSTR_PLUS_ICEBP vmovups, XMM1, XMM2
1422EMIT_INSTR_PLUS_ICEBP vmovups, XMM1, FSxBX
1423EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, XMM1
1424EMIT_INSTR_PLUS_ICEBP vmovups, YMM1, YMM2
1425EMIT_INSTR_PLUS_ICEBP vmovups, YMM1, FSxBX
1426EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, YMM1
1427 %if TMPL_BITS == 64
1428EMIT_INSTR_PLUS_ICEBP movups, XMM8, XMM12
1429EMIT_INSTR_PLUS_ICEBP movups, XMM10, FSxBX
1430EMIT_INSTR_PLUS_ICEBP movups, FSxBX, XMM10
1431EMIT_INSTR_PLUS_ICEBP vmovups, XMM7, XMM14
1432EMIT_INSTR_PLUS_ICEBP vmovups, XMM11, FSxBX
1433EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, XMM11
1434EMIT_INSTR_PLUS_ICEBP vmovups, YMM12, YMM8
1435EMIT_INSTR_PLUS_ICEBP vmovups, YMM12, FSxBX
1436EMIT_INSTR_PLUS_ICEBP vmovups, FSxBX, YMM12
1437 %endif
1438
1439;
1440; [V]MOVUPD - not testing the 2nd register variant.
1441;
1442EMIT_INSTR_PLUS_ICEBP movupd, XMM1, XMM2
1443EMIT_INSTR_PLUS_ICEBP movupd, XMM1, FSxBX
1444EMIT_INSTR_PLUS_ICEBP movupd, FSxBX, XMM1
1445EMIT_INSTR_PLUS_ICEBP vmovupd, XMM1, XMM2
1446EMIT_INSTR_PLUS_ICEBP vmovupd, XMM1, FSxBX
1447EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, XMM1
1448EMIT_INSTR_PLUS_ICEBP vmovupd, YMM1, YMM2
1449EMIT_INSTR_PLUS_ICEBP vmovupd, YMM1, FSxBX
1450EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, YMM1
1451 %if TMPL_BITS == 64
1452EMIT_INSTR_PLUS_ICEBP movupd, XMM8, XMM12
1453EMIT_INSTR_PLUS_ICEBP movupd, XMM10, FSxBX
1454EMIT_INSTR_PLUS_ICEBP movupd, FSxBX, XMM10
1455EMIT_INSTR_PLUS_ICEBP vmovupd, XMM7, XMM14
1456EMIT_INSTR_PLUS_ICEBP vmovupd, XMM11, FSxBX
1457EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, XMM11
1458EMIT_INSTR_PLUS_ICEBP vmovupd, YMM12, YMM8
1459EMIT_INSTR_PLUS_ICEBP vmovupd, YMM12, FSxBX
1460EMIT_INSTR_PLUS_ICEBP vmovupd, FSxBX, YMM12
1461 %endif
1462
1463;
1464; [V]MOVSS - not testing the 2nd register variant.
1465;
1466EMIT_INSTR_PLUS_ICEBP movss, XMM1, XMM2
1467EMIT_INSTR_PLUS_ICEBP movss, XMM1, FSxBX
1468EMIT_INSTR_PLUS_ICEBP movss, FSxBX, XMM1
1469EMIT_INSTR_PLUS_ICEBP vmovss, XMM1, XMM2
1470EMIT_INSTR_PLUS_ICEBP vmovss, XMM1, FSxBX
1471EMIT_INSTR_PLUS_ICEBP vmovss, FSxBX, XMM1
1472 %if TMPL_BITS == 64
1473EMIT_INSTR_PLUS_ICEBP movss, XMM11, XMM8
1474EMIT_INSTR_PLUS_ICEBP movss, XMM8, FSxBX
1475EMIT_INSTR_PLUS_ICEBP movss, FSxBX, XMM11
1476EMIT_INSTR_PLUS_ICEBP vmovss, XMM9, XMM10
1477EMIT_INSTR_PLUS_ICEBP vmovss, XMM10, FSxBX
1478EMIT_INSTR_PLUS_ICEBP vmovss, FSxBX, XMM9
1479 %endif
1480
1481;
1482; [V]MOVSD - not testing the 2nd register variant.
1483;
1484EMIT_INSTR_PLUS_ICEBP movsd, XMM1, XMM2
1485EMIT_INSTR_PLUS_ICEBP movsd, XMM1, FSxBX
1486EMIT_INSTR_PLUS_ICEBP movsd, FSxBX, XMM1
1487EMIT_INSTR_PLUS_ICEBP vmovsd, XMM1, XMM2
1488EMIT_INSTR_PLUS_ICEBP vmovsd, XMM1, FSxBX
1489EMIT_INSTR_PLUS_ICEBP vmovsd, FSxBX, XMM1
1490 %if TMPL_BITS == 64
1491EMIT_INSTR_PLUS_ICEBP movsd, XMM11, XMM8
1492EMIT_INSTR_PLUS_ICEBP movsd, XMM8, FSxBX
1493EMIT_INSTR_PLUS_ICEBP movsd, FSxBX, XMM11
1494EMIT_INSTR_PLUS_ICEBP vmovsd, XMM9, XMM10
1495EMIT_INSTR_PLUS_ICEBP vmovsd, XMM10, FSxBX
1496EMIT_INSTR_PLUS_ICEBP vmovsd, FSxBX, XMM9
1497 %endif
1498
1499;
1500; [V]MOVLPS
1501;
1502EMIT_INSTR_PLUS_ICEBP movlps, XMM1, FSxBX
1503EMIT_INSTR_PLUS_ICEBP movlps, FSxBX, XMM1
1504EMIT_INSTR_PLUS_ICEBP vmovlps, XMM1, XMM2, FSxBX
1505EMIT_INSTR_PLUS_ICEBP vmovlps, FSxBX, XMM1
1506 %if TMPL_BITS == 64
1507EMIT_INSTR_PLUS_ICEBP movlps, XMM8, FSxBX
1508EMIT_INSTR_PLUS_ICEBP movlps, FSxBX, XMM11
1509EMIT_INSTR_PLUS_ICEBP vmovlps, XMM10, XMM14, FSxBX
1510EMIT_INSTR_PLUS_ICEBP vmovlps, FSxBX, XMM9
1511 %endif
1512
1513;
1514; [V]MOVLPD
1515;
1516EMIT_INSTR_PLUS_ICEBP movlpd, XMM1, FSxBX
1517EMIT_INSTR_PLUS_ICEBP movlpd, FSxBX, XMM1
1518EMIT_INSTR_PLUS_ICEBP vmovlpd, XMM1, XMM2, FSxBX
1519EMIT_INSTR_PLUS_ICEBP vmovlpd, FSxBX, XMM1
1520 %if TMPL_BITS == 64
1521EMIT_INSTR_PLUS_ICEBP movlpd, XMM8, FSxBX
1522EMIT_INSTR_PLUS_ICEBP movlpd, FSxBX, XMM11
1523EMIT_INSTR_PLUS_ICEBP vmovlpd, XMM10, XMM14, FSxBX
1524EMIT_INSTR_PLUS_ICEBP vmovlpd, FSxBX, XMM9
1525 %endif
1526
1527;
1528; [V]MOVHPS
1529;
1530EMIT_INSTR_PLUS_ICEBP movhps, XMM1, FSxBX
1531EMIT_INSTR_PLUS_ICEBP movhps, FSxBX, XMM1
1532EMIT_INSTR_PLUS_ICEBP vmovhps, XMM1, XMM2, FSxBX
1533EMIT_INSTR_PLUS_ICEBP vmovhps, FSxBX, XMM1
1534 %if TMPL_BITS == 64
1535EMIT_INSTR_PLUS_ICEBP movhps, XMM8, FSxBX
1536EMIT_INSTR_PLUS_ICEBP movhps, FSxBX, XMM11
1537EMIT_INSTR_PLUS_ICEBP vmovhps, XMM10, XMM14, FSxBX
1538EMIT_INSTR_PLUS_ICEBP vmovhps, FSxBX, XMM9
1539 %endif
1540
1541;
1542; [V]MOVHPD
1543;
1544EMIT_INSTR_PLUS_ICEBP movhpd, XMM1, FSxBX
1545EMIT_INSTR_PLUS_ICEBP movhpd, FSxBX, XMM1
1546EMIT_INSTR_PLUS_ICEBP vmovhpd, XMM1, XMM2, FSxBX
1547EMIT_INSTR_PLUS_ICEBP vmovhpd, FSxBX, XMM1
1548 %if TMPL_BITS == 64
1549EMIT_INSTR_PLUS_ICEBP movhpd, XMM8, FSxBX
1550EMIT_INSTR_PLUS_ICEBP movhpd, FSxBX, XMM11
1551EMIT_INSTR_PLUS_ICEBP vmovhpd, XMM10, XMM14, FSxBX
1552EMIT_INSTR_PLUS_ICEBP vmovhpd, FSxBX, XMM9
1553 %endif
1554
1555;
1556; [V]MOVHLPS
1557;
1558EMIT_INSTR_PLUS_ICEBP movhlps, XMM1, XMM2
1559EMIT_INSTR_PLUS_ICEBP vmovhlps, XMM1, XMM2, XMM3
1560 %if TMPL_BITS == 64
1561EMIT_INSTR_PLUS_ICEBP movhlps, XMM8, XMM12
1562EMIT_INSTR_PLUS_ICEBP vmovhlps, XMM10, XMM14, XMM12
1563 %endif
1564
1565;
1566; [V]MOVSLDUP
1567;
1568EMIT_INSTR_PLUS_ICEBP movsldup, XMM1, XMM2
1569EMIT_INSTR_PLUS_ICEBP movsldup, XMM1, FSxBX
1570EMIT_INSTR_PLUS_ICEBP vmovsldup, XMM1, XMM2
1571EMIT_INSTR_PLUS_ICEBP vmovsldup, XMM1, FSxBX
1572EMIT_INSTR_PLUS_ICEBP vmovsldup, YMM1, YMM2
1573EMIT_INSTR_PLUS_ICEBP vmovsldup, YMM1, FSxBX
1574 %if TMPL_BITS == 64
1575EMIT_INSTR_PLUS_ICEBP movsldup, XMM8, XMM12
1576EMIT_INSTR_PLUS_ICEBP movsldup, XMM10, FSxBX
1577EMIT_INSTR_PLUS_ICEBP vmovsldup, XMM7, XMM14
1578EMIT_INSTR_PLUS_ICEBP vmovsldup, XMM11, FSxBX
1579EMIT_INSTR_PLUS_ICEBP vmovsldup, YMM12, YMM8
1580EMIT_INSTR_PLUS_ICEBP vmovsldup, YMM12, FSxBX
1581 %endif
1582
1583;
1584; [V]MOVSHDUP
1585;
1586EMIT_INSTR_PLUS_ICEBP movshdup, XMM1, XMM2
1587EMIT_INSTR_PLUS_ICEBP movshdup, XMM1, FSxBX
1588EMIT_INSTR_PLUS_ICEBP vmovshdup, XMM1, XMM2
1589EMIT_INSTR_PLUS_ICEBP vmovshdup, XMM1, FSxBX
1590EMIT_INSTR_PLUS_ICEBP vmovshdup, YMM1, YMM2
1591EMIT_INSTR_PLUS_ICEBP vmovshdup, YMM1, FSxBX
1592 %if TMPL_BITS == 64
1593EMIT_INSTR_PLUS_ICEBP movshdup, XMM8, XMM12
1594EMIT_INSTR_PLUS_ICEBP movshdup, XMM10, FSxBX
1595EMIT_INSTR_PLUS_ICEBP vmovshdup, XMM7, XMM14
1596EMIT_INSTR_PLUS_ICEBP vmovshdup, XMM11, FSxBX
1597EMIT_INSTR_PLUS_ICEBP vmovshdup, YMM12, YMM8
1598EMIT_INSTR_PLUS_ICEBP vmovshdup, YMM12, FSxBX
1599 %endif
1600
1601;
1602; [V]MOVDDUP
1603;
1604EMIT_INSTR_PLUS_ICEBP movddup, XMM1, XMM2
1605EMIT_INSTR_PLUS_ICEBP movddup, XMM1, FSxBX
1606EMIT_INSTR_PLUS_ICEBP vmovddup, XMM1, XMM2
1607EMIT_INSTR_PLUS_ICEBP vmovddup, XMM1, FSxBX
1608EMIT_INSTR_PLUS_ICEBP vmovddup, YMM1, YMM2
1609EMIT_INSTR_PLUS_ICEBP vmovddup, YMM1, FSxBX
1610 %if TMPL_BITS == 64
1611EMIT_INSTR_PLUS_ICEBP movddup, XMM8, XMM12
1612EMIT_INSTR_PLUS_ICEBP movddup, XMM10, FSxBX
1613EMIT_INSTR_PLUS_ICEBP vmovddup, XMM7, XMM14
1614EMIT_INSTR_PLUS_ICEBP vmovddup, XMM11, FSxBX
1615EMIT_INSTR_PLUS_ICEBP vmovddup, YMM12, YMM8
1616EMIT_INSTR_PLUS_ICEBP vmovddup, YMM12, FSxBX
1617 %endif
1618
1619;
1620; [V]MOVAPS
1621;
1622EMIT_INSTR_PLUS_ICEBP movaps, XMM1, XMM2
1623EMIT_INSTR_PLUS_ICEBP movaps, XMM1, FSxBX
1624EMIT_INSTR_PLUS_ICEBP vmovaps, XMM1, XMM2
1625EMIT_INSTR_PLUS_ICEBP vmovaps, XMM1, FSxBX
1626EMIT_INSTR_PLUS_ICEBP vmovaps, YMM1, YMM2
1627EMIT_INSTR_PLUS_ICEBP vmovaps, YMM1, FSxBX
1628 %if TMPL_BITS == 64
1629EMIT_INSTR_PLUS_ICEBP movaps, XMM8, XMM12
1630EMIT_INSTR_PLUS_ICEBP movaps, XMM10, FSxBX
1631EMIT_INSTR_PLUS_ICEBP vmovaps, XMM7, XMM14
1632EMIT_INSTR_PLUS_ICEBP vmovaps, XMM11, FSxBX
1633EMIT_INSTR_PLUS_ICEBP vmovaps, YMM12, YMM8
1634EMIT_INSTR_PLUS_ICEBP vmovaps, YMM12, FSxBX
1635 %endif
1636
1637EMIT_INSTR_PLUS_ICEBP movapd, XMM1, XMM2
1638EMIT_INSTR_PLUS_ICEBP movapd, XMM1, FSxBX
1639EMIT_INSTR_PLUS_ICEBP vmovapd, XMM1, XMM2
1640EMIT_INSTR_PLUS_ICEBP vmovapd, XMM1, FSxBX
1641EMIT_INSTR_PLUS_ICEBP vmovapd, YMM1, YMM2
1642EMIT_INSTR_PLUS_ICEBP vmovapd, YMM1, FSxBX
1643 %if TMPL_BITS == 64
1644EMIT_INSTR_PLUS_ICEBP movapd, XMM8, XMM12
1645EMIT_INSTR_PLUS_ICEBP movapd, XMM10, FSxBX
1646EMIT_INSTR_PLUS_ICEBP vmovapd, XMM7, XMM14
1647EMIT_INSTR_PLUS_ICEBP vmovapd, XMM11, FSxBX
1648EMIT_INSTR_PLUS_ICEBP vmovapd, YMM12, YMM8
1649EMIT_INSTR_PLUS_ICEBP vmovapd, YMM12, FSxBX
1650 %endif
1651
1652;
1653; [V]MOVD
1654;
1655EMIT_INSTR_PLUS_ICEBP movd, MM1, EDX
1656EMIT_INSTR_PLUS_ICEBP movd, MM1, FSxBX
1657EMIT_INSTR_PLUS_ICEBP movd, EAX, MM1
1658EMIT_INSTR_PLUS_ICEBP movd, FSxBX, MM1
1659 %if TMPL_BITS == 64
1660EMIT_INSTR_PLUS_ICEBP movd, MM1, R9D
1661EMIT_INSTR_PLUS_ICEBP movd, R10D, MM0
1662 %endif
1663
1664EMIT_INSTR_PLUS_ICEBP movd, XMM1, EAX
1665EMIT_INSTR_PLUS_ICEBP movd, XMM1, FSxBX
1666EMIT_INSTR_PLUS_ICEBP movd, FSxBX, XMM1
1667EMIT_INSTR_PLUS_ICEBP movd, EAX, XMM1
1668 %if TMPL_BITS == 64
1669EMIT_INSTR_PLUS_ICEBP movd, XMM9, R8D
1670EMIT_INSTR_PLUS_ICEBP movd, R8D, XMM9
1671EMIT_INSTR_PLUS_ICEBP movd, XMM9, FSxBX
1672EMIT_INSTR_PLUS_ICEBP movd, FSxBX, XMM9
1673 %endif
1674
1675EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, EAX
1676EMIT_INSTR_PLUS_ICEBP vmovd, XMM1, FSxBX
1677EMIT_INSTR_PLUS_ICEBP vmovd, FSxBX, XMM1
1678EMIT_INSTR_PLUS_ICEBP vmovd, EDX, XMM1
1679 %if TMPL_BITS == 64
1680EMIT_INSTR_PLUS_ICEBP vmovd, XMM9, R9D
1681EMIT_INSTR_PLUS_ICEBP vmovd, R8D, XMM9
1682EMIT_INSTR_PLUS_ICEBP vmovd, XMM9, FSxBX
1683EMIT_INSTR_PLUS_ICEBP vmovd, FSxBX, XMM9
1684 %endif
1685
1686;
1687; [V]MOVQ - some hand coded stuff here as the assembler prefers the 7f/6f variants.
1688;
1689EMIT_INSTR_PLUS_ICEBP movq, MM1, MM2
1690EMIT_INSTR_PLUS_ICEBP movq, MM1, FSxBX
1691EMIT_INSTR_PLUS_ICEBP movq, FSxBX, MM1
1692 %if TMPL_BITS == 64
1693EMIT_INSTR_PLUS_ICEBP movq, R9, MM1
1694EMIT_INSTR_PLUS_ICEBP movq, MM1, R9
1695EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_MM1_FSxBX, FSxBX_PFX, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1696EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_MM1, FSxBX_PFX, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1697 %endif
1698
1699EMIT_INSTR_PLUS_ICEBP movq, XMM1, XMM2
1700EMIT_INSTR_PLUS_ICEBP movq, XMM1, FSxBX
1701EMIT_INSTR_PLUS_ICEBP movq, FSxBX, XMM1
1702 %if TMPL_BITS == 64
1703EMIT_INSTR_PLUS_ICEBP movq, XMM9, R8
1704EMIT_INSTR_PLUS_ICEBP movq, R8, XMM9
1705EMIT_INSTR_PLUS_ICEBP movq, XMM9, FSxBX
1706EMIT_INSTR_PLUS_ICEBP movq, FSxBX, XMM9
1707EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM1_FSxBX, FSxBX_PFX, 66h, 48h, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1708EMIT_INSTR_PLUS_ICEBP_BYTES 06e_movq_XMM9_FSxBX, FSxBX_PFX, 66h, 4ch, 0fh, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1709EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM1, FSxBX_PFX, 66h, 48h, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1710EMIT_INSTR_PLUS_ICEBP_BYTES 07e_movq_FSxBX_XMM9, FSxBX_PFX, 66h, 4ch, 0fh, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1711 %endif
1712
1713EMIT_INSTR_PLUS_ICEBP vmovq, XMM1, XMM2
1714EMIT_INSTR_PLUS_ICEBP vmovq, XMM1, FSxBX
1715EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM1_FSxBX, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1716EMIT_INSTR_PLUS_ICEBP vmovq, FSxBX, XMM1
1717EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM1, FSxBX_PFX, 0c4h, 0e1h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1718 %if TMPL_BITS == 64
1719EMIT_INSTR_PLUS_ICEBP vmovq, XMM9, R8
1720EMIT_INSTR_PLUS_ICEBP vmovq, R8, XMM9
1721EMIT_INSTR_PLUS_ICEBP vmovq, XMM9, FSxBX
1722EMIT_INSTR_PLUS_ICEBP vmovq, FSxBX, XMM9
1723EMIT_INSTR_PLUS_ICEBP_BYTES 06e_vmovq_XMM9_FSxBX, FSxBX_PFX, 0c4h, 061h, 0f9h, 06eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1724EMIT_INSTR_PLUS_ICEBP_BYTES 07e_vmovq_FSxBX_XMM9, FSxBX_PFX, 0c4h, 061h, 0f9h, 07eh, FSxBX_MODRM | (1 << X86_MODRM_REG_SHIFT)
1725 %endif
1726
1727;
1728; [V]MOVDQU - not testing the 2nd register variant.
1729;
1730EMIT_INSTR_PLUS_ICEBP movdqu, XMM1, XMM2
1731EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM1_XMM2, 0f3h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1732EMIT_INSTR_PLUS_ICEBP movdqu, XMM1, FSxBX
1733EMIT_INSTR_PLUS_ICEBP movdqu, FSxBX, XMM1
1734EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, XMM2 ; C5 FA 6F CA
1735EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_XMM1_XMM2, 0c5h, 0fah, 07fh, X86_MODRM_MAKE(3, 2, 1)
1736EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM1, FSxBX
1737EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM1
1738EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, YMM2 ; C5 FE 6F CA
1739EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqu_YMM1_YMM2, 0c5h, 0feh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1740EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM1, FSxBX
1741EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM1
1742 %if TMPL_BITS == 64
1743EMIT_INSTR_PLUS_ICEBP movdqu, XMM8, XMM12 ; F3 45 0F 6F C4
1744EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqu_XMM8_XMM12, 0f3h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1745EMIT_INSTR_PLUS_ICEBP movdqu, XMM10, FSxBX
1746EMIT_INSTR_PLUS_ICEBP movdqu, FSxBX, XMM10
1747EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM7, XMM14
1748EMIT_INSTR_PLUS_ICEBP vmovdqu, XMM11, FSxBX
1749EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, XMM11
1750EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM12, YMM8
1751EMIT_INSTR_PLUS_ICEBP vmovdqu, YMM12, FSxBX
1752EMIT_INSTR_PLUS_ICEBP vmovdqu, FSxBX, YMM12
1753 %endif
1754
1755;
1756; [V]MOVDQA - not testing the 2nd register variant.
1757;
1758EMIT_INSTR_PLUS_ICEBP movdqa, XMM1, XMM2
1759EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM1_XMM2, 066h, 00fh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1760EMIT_INSTR_PLUS_ICEBP movdqa, XMM1, FSxBX
1761EMIT_INSTR_PLUS_ICEBP movdqa, FSxBX, XMM1
1762EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM1, XMM2
1763EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM1_XMM2, 0c5h, 0f9h, 07fh, X86_MODRM_MAKE(3, 2, 1)
1764EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM1, FSxBX
1765EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM1
1766EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM1, YMM2
1767EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM1_YMM2, 0c5h, 0fdh, 07fh, X86_MODRM_MAKE(3, 2, 1)
1768EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM1, FSxBX
1769EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM1
1770 %if TMPL_BITS == 64
1771EMIT_INSTR_PLUS_ICEBP movdqa, XMM8, XMM12 ; 66 45 0F 6F C4
1772EMIT_INSTR_PLUS_ICEBP_BYTES 07f_movdqa_XMM8_XMM12, 066h, 045h, 00fh, 07fh, X86_MODRM_MAKE(3, 4, 0)
1773EMIT_INSTR_PLUS_ICEBP movdqa, XMM10, FSxBX
1774EMIT_INSTR_PLUS_ICEBP movdqa, FSxBX, XMM10
1775EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM8, XMM14 ; C4 C1 79 6F FE
1776EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_XMM8_XMM14, 0c4h, 041h, 79h, 07fh, X86_MODRM_MAKE(3, 6, 0)
1777EMIT_INSTR_PLUS_ICEBP vmovdqa, XMM11, FSxBX
1778EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, XMM11
1779EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM12, YMM8
1780EMIT_INSTR_PLUS_ICEBP_BYTES 07f_vmovdqa_YMM12_YMM8, 0c4h, 041h, 7dh, 07fh, X86_MODRM_MAKE(3, 0, 4)
1781EMIT_INSTR_PLUS_ICEBP vmovdqa, YMM12, FSxBX
1782EMIT_INSTR_PLUS_ICEBP vmovdqa, FSxBX, YMM12
1783 %endif
1784
1785;
1786; [V]PTEST
1787;
1788EMIT_INSTR_PLUS_ICEBP ptest, XMM1, XMM2
1789EMIT_INSTR_PLUS_ICEBP ptest, XMM1, FSxBX
1790EMIT_INSTR_PLUS_ICEBP vptest, XMM1, XMM2
1791EMIT_INSTR_PLUS_ICEBP vptest, XMM1, FSxBX
1792EMIT_INSTR_PLUS_ICEBP vptest, YMM1, YMM2
1793EMIT_INSTR_PLUS_ICEBP vptest, YMM1, FSxBX
1794 %if TMPL_BITS == 64
1795EMIT_INSTR_PLUS_ICEBP ptest, XMM9, XMM8
1796EMIT_INSTR_PLUS_ICEBP ptest, XMM9, FSxBX
1797EMIT_INSTR_PLUS_ICEBP vptest, XMM9, XMM8
1798EMIT_INSTR_PLUS_ICEBP vptest, XMM9, FSxBX
1799EMIT_INSTR_PLUS_ICEBP vptest, YMM9, YMM8
1800EMIT_INSTR_PLUS_ICEBP vptest, YMM9, FSxBX
1801 %endif
1802
1803;
1804; [V]PAVGB
1805;
1806EMIT_INSTR_PLUS_ICEBP pavgb, MM1, MM2
1807EMIT_INSTR_PLUS_ICEBP pavgb, MM1, FSxBX
1808
1809EMIT_INSTR_PLUS_ICEBP pavgb, XMM1, XMM2
1810EMIT_INSTR_PLUS_ICEBP pavgb, XMM1, FSxBX
1811 %if TMPL_BITS == 64
1812EMIT_INSTR_PLUS_ICEBP pavgb, XMM8, XMM9
1813EMIT_INSTR_PLUS_ICEBP pavgb, XMM8, FSxBX
1814 %endif
1815
1816EMIT_INSTR_PLUS_ICEBP vpavgb, XMM1, XMM2, XMM3
1817EMIT_INSTR_PLUS_ICEBP vpavgb, XMM1, XMM2, FSxBX
1818 %if TMPL_BITS == 64
1819EMIT_INSTR_PLUS_ICEBP vpavgb, XMM8, XMM9, XMM10
1820EMIT_INSTR_PLUS_ICEBP vpavgb, XMM8, XMM9, FSxBX
1821 %endif
1822
1823EMIT_INSTR_PLUS_ICEBP vpavgb, YMM1, YMM2, YMM3
1824EMIT_INSTR_PLUS_ICEBP vpavgb, YMM1, YMM2, FSxBX
1825 %if TMPL_BITS == 64
1826EMIT_INSTR_PLUS_ICEBP vpavgb, YMM8, YMM9, YMM10
1827EMIT_INSTR_PLUS_ICEBP vpavgb, YMM8, YMM9, FSxBX
1828 %endif
1829
1830;
1831; [V]PAVGW
1832;
1833EMIT_INSTR_PLUS_ICEBP pavgw, MM1, MM2
1834EMIT_INSTR_PLUS_ICEBP pavgw, MM1, FSxBX
1835
1836EMIT_INSTR_PLUS_ICEBP pavgw, XMM1, XMM2
1837EMIT_INSTR_PLUS_ICEBP pavgw, XMM1, FSxBX
1838 %if TMPL_BITS == 64
1839EMIT_INSTR_PLUS_ICEBP pavgw, XMM8, XMM9
1840EMIT_INSTR_PLUS_ICEBP pavgw, XMM8, FSxBX
1841 %endif
1842
1843EMIT_INSTR_PLUS_ICEBP vpavgw, XMM1, XMM2, XMM3
1844EMIT_INSTR_PLUS_ICEBP vpavgw, XMM1, XMM2, FSxBX
1845 %if TMPL_BITS == 64
1846EMIT_INSTR_PLUS_ICEBP vpavgw, XMM8, XMM9, XMM10
1847EMIT_INSTR_PLUS_ICEBP vpavgw, XMM8, XMM9, FSxBX
1848 %endif
1849
1850EMIT_INSTR_PLUS_ICEBP vpavgw, YMM1, YMM2, YMM3
1851EMIT_INSTR_PLUS_ICEBP vpavgw, YMM1, YMM2, FSxBX
1852 %if TMPL_BITS == 64
1853EMIT_INSTR_PLUS_ICEBP vpavgw, YMM8, YMM9, YMM10
1854EMIT_INSTR_PLUS_ICEBP vpavgw, YMM8, YMM9, FSxBX
1855 %endif
1856
1857;
1858; [V]PSIGNB
1859;
1860EMIT_INSTR_PLUS_ICEBP psignb, MM1, MM2
1861EMIT_INSTR_PLUS_ICEBP psignb, MM1, FSxBX
1862
1863EMIT_INSTR_PLUS_ICEBP psignb, XMM1, XMM2
1864EMIT_INSTR_PLUS_ICEBP psignb, XMM1, FSxBX
1865 %if TMPL_BITS == 64
1866EMIT_INSTR_PLUS_ICEBP psignb, XMM8, XMM9
1867EMIT_INSTR_PLUS_ICEBP psignb, XMM8, FSxBX
1868 %endif
1869
1870EMIT_INSTR_PLUS_ICEBP vpsignb, XMM1, XMM2, XMM3
1871EMIT_INSTR_PLUS_ICEBP vpsignb, XMM1, XMM2, FSxBX
1872 %if TMPL_BITS == 64
1873EMIT_INSTR_PLUS_ICEBP vpsignb, XMM8, XMM9, XMM10
1874EMIT_INSTR_PLUS_ICEBP vpsignb, XMM8, XMM9, FSxBX
1875 %endif
1876
1877EMIT_INSTR_PLUS_ICEBP vpsignb, YMM1, YMM2, YMM3
1878EMIT_INSTR_PLUS_ICEBP vpsignb, YMM1, YMM2, FSxBX
1879 %if TMPL_BITS == 64
1880EMIT_INSTR_PLUS_ICEBP vpsignb, YMM8, YMM9, YMM10
1881EMIT_INSTR_PLUS_ICEBP vpsignb, YMM8, YMM9, FSxBX
1882 %endif
1883
1884;
1885; [V]PSIGNW
1886;
1887EMIT_INSTR_PLUS_ICEBP psignw, MM1, MM2
1888EMIT_INSTR_PLUS_ICEBP psignw, MM1, FSxBX
1889
1890EMIT_INSTR_PLUS_ICEBP psignw, XMM1, XMM2
1891EMIT_INSTR_PLUS_ICEBP psignw, XMM1, FSxBX
1892 %if TMPL_BITS == 64
1893EMIT_INSTR_PLUS_ICEBP psignw, XMM8, XMM9
1894EMIT_INSTR_PLUS_ICEBP psignw, XMM8, FSxBX
1895 %endif
1896
1897EMIT_INSTR_PLUS_ICEBP vpsignw, XMM1, XMM2, XMM3
1898EMIT_INSTR_PLUS_ICEBP vpsignw, XMM1, XMM2, FSxBX
1899 %if TMPL_BITS == 64
1900EMIT_INSTR_PLUS_ICEBP vpsignw, XMM8, XMM9, XMM10
1901EMIT_INSTR_PLUS_ICEBP vpsignw, XMM8, XMM9, FSxBX
1902 %endif
1903
1904EMIT_INSTR_PLUS_ICEBP vpsignw, YMM1, YMM2, YMM3
1905EMIT_INSTR_PLUS_ICEBP vpsignw, YMM1, YMM2, FSxBX
1906 %if TMPL_BITS == 64
1907EMIT_INSTR_PLUS_ICEBP vpsignw, YMM8, YMM9, YMM10
1908EMIT_INSTR_PLUS_ICEBP vpsignw, YMM8, YMM9, FSxBX
1909 %endif
1910
1911;
1912; [V]PSIGND
1913;
1914EMIT_INSTR_PLUS_ICEBP psignd, MM1, MM2
1915EMIT_INSTR_PLUS_ICEBP psignd, MM1, FSxBX
1916
1917EMIT_INSTR_PLUS_ICEBP psignd, XMM1, XMM2
1918EMIT_INSTR_PLUS_ICEBP psignd, XMM1, FSxBX
1919 %if TMPL_BITS == 64
1920EMIT_INSTR_PLUS_ICEBP psignd, XMM8, XMM9
1921EMIT_INSTR_PLUS_ICEBP psignd, XMM8, FSxBX
1922 %endif
1923
1924EMIT_INSTR_PLUS_ICEBP vpsignd, XMM1, XMM2, XMM3
1925EMIT_INSTR_PLUS_ICEBP vpsignd, XMM1, XMM2, FSxBX
1926 %if TMPL_BITS == 64
1927EMIT_INSTR_PLUS_ICEBP vpsignd, XMM8, XMM9, XMM10
1928EMIT_INSTR_PLUS_ICEBP vpsignd, XMM8, XMM9, FSxBX
1929 %endif
1930
1931EMIT_INSTR_PLUS_ICEBP vpsignd, YMM1, YMM2, YMM3
1932EMIT_INSTR_PLUS_ICEBP vpsignd, YMM1, YMM2, FSxBX
1933 %if TMPL_BITS == 64
1934EMIT_INSTR_PLUS_ICEBP vpsignd, YMM8, YMM9, YMM10
1935EMIT_INSTR_PLUS_ICEBP vpsignd, YMM8, YMM9, FSxBX
1936 %endif
1937
1938;
1939; [V]ABSB
1940;
1941EMIT_INSTR_PLUS_ICEBP pabsb, MM1, MM2
1942EMIT_INSTR_PLUS_ICEBP pabsb, MM1, FSxBX
1943EMIT_INSTR_PLUS_ICEBP pabsb, XMM1, XMM2
1944EMIT_INSTR_PLUS_ICEBP pabsb, XMM1, FSxBX
1945EMIT_INSTR_PLUS_ICEBP vpabsb, XMM1, XMM2
1946EMIT_INSTR_PLUS_ICEBP vpabsb, XMM1, FSxBX
1947EMIT_INSTR_PLUS_ICEBP vpabsb, YMM1, YMM2
1948EMIT_INSTR_PLUS_ICEBP vpabsb, YMM1, FSxBX
1949 %if TMPL_BITS == 64
1950EMIT_INSTR_PLUS_ICEBP pabsb, XMM9, XMM8
1951EMIT_INSTR_PLUS_ICEBP pabsb, XMM9, FSxBX
1952EMIT_INSTR_PLUS_ICEBP vpabsb, XMM9, XMM8
1953EMIT_INSTR_PLUS_ICEBP vpabsb, XMM9, FSxBX
1954EMIT_INSTR_PLUS_ICEBP vpabsb, YMM9, YMM8
1955EMIT_INSTR_PLUS_ICEBP vpabsb, YMM9, FSxBX
1956 %endif
1957
1958;
1959; [V]ABSW
1960;
1961EMIT_INSTR_PLUS_ICEBP pabsw, MM1, MM2
1962EMIT_INSTR_PLUS_ICEBP pabsw, MM1, FSxBX
1963EMIT_INSTR_PLUS_ICEBP pabsw, XMM1, XMM2
1964EMIT_INSTR_PLUS_ICEBP pabsw, XMM1, FSxBX
1965EMIT_INSTR_PLUS_ICEBP vpabsw, XMM1, XMM2
1966EMIT_INSTR_PLUS_ICEBP vpabsw, XMM1, FSxBX
1967EMIT_INSTR_PLUS_ICEBP vpabsw, YMM1, YMM2
1968EMIT_INSTR_PLUS_ICEBP vpabsw, YMM1, FSxBX
1969 %if TMPL_BITS == 64
1970EMIT_INSTR_PLUS_ICEBP pabsw, XMM9, XMM8
1971EMIT_INSTR_PLUS_ICEBP pabsw, XMM9, FSxBX
1972EMIT_INSTR_PLUS_ICEBP vpabsw, XMM9, XMM8
1973EMIT_INSTR_PLUS_ICEBP vpabsw, XMM9, FSxBX
1974EMIT_INSTR_PLUS_ICEBP vpabsw, YMM9, YMM8
1975EMIT_INSTR_PLUS_ICEBP vpabsw, YMM9, FSxBX
1976 %endif
1977
1978;
1979; [V]ABSD
1980;
1981EMIT_INSTR_PLUS_ICEBP pabsd, MM1, MM2
1982EMIT_INSTR_PLUS_ICEBP pabsd, MM1, FSxBX
1983EMIT_INSTR_PLUS_ICEBP pabsd, XMM1, XMM2
1984EMIT_INSTR_PLUS_ICEBP pabsd, XMM1, FSxBX
1985EMIT_INSTR_PLUS_ICEBP vpabsd, XMM1, XMM2
1986EMIT_INSTR_PLUS_ICEBP vpabsd, XMM1, FSxBX
1987EMIT_INSTR_PLUS_ICEBP vpabsd, YMM1, YMM2
1988EMIT_INSTR_PLUS_ICEBP vpabsd, YMM1, FSxBX
1989 %if TMPL_BITS == 64
1990EMIT_INSTR_PLUS_ICEBP pabsd, XMM9, XMM8
1991EMIT_INSTR_PLUS_ICEBP pabsd, XMM9, FSxBX
1992EMIT_INSTR_PLUS_ICEBP vpabsd, XMM9, XMM8
1993EMIT_INSTR_PLUS_ICEBP vpabsd, XMM9, FSxBX
1994EMIT_INSTR_PLUS_ICEBP vpabsd, YMM9, YMM8
1995EMIT_INSTR_PLUS_ICEBP vpabsd, YMM9, FSxBX
1996 %endif
1997
1998;
1999; [V]PHADDW
2000;
2001EMIT_INSTR_PLUS_ICEBP phaddw, MM1, MM2
2002EMIT_INSTR_PLUS_ICEBP phaddw, MM1, FSxBX
2003EMIT_INSTR_PLUS_ICEBP phaddw, XMM1, XMM2
2004EMIT_INSTR_PLUS_ICEBP phaddw, XMM1, FSxBX
2005EMIT_INSTR_PLUS_ICEBP vphaddw, XMM1, XMM2, XMM3
2006EMIT_INSTR_PLUS_ICEBP vphaddw, XMM1, XMM2, FSxBX
2007EMIT_INSTR_PLUS_ICEBP vphaddw, YMM1, YMM2, YMM3
2008EMIT_INSTR_PLUS_ICEBP vphaddw, YMM1, YMM2, FSxBX
2009 %if TMPL_BITS == 64
2010EMIT_INSTR_PLUS_ICEBP phaddw, XMM8, XMM9
2011EMIT_INSTR_PLUS_ICEBP phaddw, XMM8, FSxBX
2012EMIT_INSTR_PLUS_ICEBP vphaddw, XMM8, XMM9, XMM10
2013EMIT_INSTR_PLUS_ICEBP vphaddw, XMM8, XMM9, FSxBX
2014EMIT_INSTR_PLUS_ICEBP vphaddw, YMM8, YMM9, YMM10
2015EMIT_INSTR_PLUS_ICEBP vphaddw, YMM8, YMM9, FSxBX
2016 %endif
2017
2018;
2019; [V]PHADDD
2020;
2021EMIT_INSTR_PLUS_ICEBP phaddd, MM1, MM2
2022EMIT_INSTR_PLUS_ICEBP phaddd, MM1, FSxBX
2023EMIT_INSTR_PLUS_ICEBP phaddd, XMM1, XMM2
2024EMIT_INSTR_PLUS_ICEBP phaddd, XMM1, FSxBX
2025EMIT_INSTR_PLUS_ICEBP vphaddd, XMM1, XMM2, XMM3
2026EMIT_INSTR_PLUS_ICEBP vphaddd, XMM1, XMM2, FSxBX
2027EMIT_INSTR_PLUS_ICEBP vphaddd, YMM1, YMM2, YMM3
2028EMIT_INSTR_PLUS_ICEBP vphaddd, YMM1, YMM2, FSxBX
2029 %if TMPL_BITS == 64
2030EMIT_INSTR_PLUS_ICEBP phaddd, XMM8, XMM9
2031EMIT_INSTR_PLUS_ICEBP phaddd, XMM8, FSxBX
2032EMIT_INSTR_PLUS_ICEBP vphaddd, XMM8, XMM9, XMM10
2033EMIT_INSTR_PLUS_ICEBP vphaddd, XMM8, XMM9, FSxBX
2034EMIT_INSTR_PLUS_ICEBP vphaddd, YMM8, YMM9, YMM10
2035EMIT_INSTR_PLUS_ICEBP vphaddd, YMM8, YMM9, FSxBX
2036 %endif
2037
2038
2039;
2040; [V]PHSUBW
2041;
2042EMIT_INSTR_PLUS_ICEBP phsubw, MM1, MM2
2043EMIT_INSTR_PLUS_ICEBP phsubw, MM1, FSxBX
2044EMIT_INSTR_PLUS_ICEBP phsubw, XMM1, XMM2
2045EMIT_INSTR_PLUS_ICEBP phsubw, XMM1, FSxBX
2046EMIT_INSTR_PLUS_ICEBP vphsubw, XMM1, XMM2, XMM3
2047EMIT_INSTR_PLUS_ICEBP vphsubw, XMM1, XMM2, FSxBX
2048EMIT_INSTR_PLUS_ICEBP vphsubw, YMM1, YMM2, YMM3
2049EMIT_INSTR_PLUS_ICEBP vphsubw, YMM1, YMM2, FSxBX
2050 %if TMPL_BITS == 64
2051EMIT_INSTR_PLUS_ICEBP phsubw, XMM8, XMM9
2052EMIT_INSTR_PLUS_ICEBP phsubw, XMM8, FSxBX
2053EMIT_INSTR_PLUS_ICEBP vphsubw, XMM8, XMM9, XMM10
2054EMIT_INSTR_PLUS_ICEBP vphsubw, XMM8, XMM9, FSxBX
2055EMIT_INSTR_PLUS_ICEBP vphsubw, YMM8, YMM9, YMM10
2056EMIT_INSTR_PLUS_ICEBP vphsubw, YMM8, YMM9, FSxBX
2057 %endif
2058
2059;
2060; [V]PHSUBD
2061;
2062EMIT_INSTR_PLUS_ICEBP phsubd, MM1, MM2
2063EMIT_INSTR_PLUS_ICEBP phsubd, MM1, FSxBX
2064EMIT_INSTR_PLUS_ICEBP phsubd, XMM1, XMM2
2065EMIT_INSTR_PLUS_ICEBP phsubd, XMM1, FSxBX
2066EMIT_INSTR_PLUS_ICEBP vphsubd, XMM1, XMM2, XMM3
2067EMIT_INSTR_PLUS_ICEBP vphsubd, XMM1, XMM2, FSxBX
2068EMIT_INSTR_PLUS_ICEBP vphsubd, YMM1, YMM2, YMM3
2069EMIT_INSTR_PLUS_ICEBP vphsubd, YMM1, YMM2, FSxBX
2070 %if TMPL_BITS == 64
2071EMIT_INSTR_PLUS_ICEBP phsubd, XMM8, XMM9
2072EMIT_INSTR_PLUS_ICEBP phsubd, XMM8, FSxBX
2073EMIT_INSTR_PLUS_ICEBP vphsubd, XMM8, XMM9, XMM10
2074EMIT_INSTR_PLUS_ICEBP vphsubd, XMM8, XMM9, FSxBX
2075EMIT_INSTR_PLUS_ICEBP vphsubd, YMM8, YMM9, YMM10
2076EMIT_INSTR_PLUS_ICEBP vphsubd, YMM8, YMM9, FSxBX
2077 %endif
2078
2079;
2080; [V]PHADDSW
2081;
2082EMIT_INSTR_PLUS_ICEBP phaddsw, MM1, MM2
2083EMIT_INSTR_PLUS_ICEBP phaddsw, MM1, FSxBX
2084EMIT_INSTR_PLUS_ICEBP phaddsw, XMM1, XMM2
2085EMIT_INSTR_PLUS_ICEBP phaddsw, XMM1, FSxBX
2086EMIT_INSTR_PLUS_ICEBP vphaddsw, XMM1, XMM2, XMM3
2087EMIT_INSTR_PLUS_ICEBP vphaddsw, XMM1, XMM2, FSxBX
2088EMIT_INSTR_PLUS_ICEBP vphaddsw, YMM1, YMM2, YMM3
2089EMIT_INSTR_PLUS_ICEBP vphaddsw, YMM1, YMM2, FSxBX
2090 %if TMPL_BITS == 64
2091EMIT_INSTR_PLUS_ICEBP phaddsw, XMM8, XMM9
2092EMIT_INSTR_PLUS_ICEBP phaddsw, XMM8, FSxBX
2093EMIT_INSTR_PLUS_ICEBP vphaddsw, XMM8, XMM9, XMM10
2094EMIT_INSTR_PLUS_ICEBP vphaddsw, XMM8, XMM9, FSxBX
2095EMIT_INSTR_PLUS_ICEBP vphaddsw, YMM8, YMM9, YMM10
2096EMIT_INSTR_PLUS_ICEBP vphaddsw, YMM8, YMM9, FSxBX
2097 %endif
2098
2099;
2100; [V]PHSUBSW
2101;
2102EMIT_INSTR_PLUS_ICEBP phsubsw, MM1, MM2
2103EMIT_INSTR_PLUS_ICEBP phsubsw, MM1, FSxBX
2104EMIT_INSTR_PLUS_ICEBP phsubsw, XMM1, XMM2
2105EMIT_INSTR_PLUS_ICEBP phsubsw, XMM1, FSxBX
2106EMIT_INSTR_PLUS_ICEBP vphsubsw, XMM1, XMM2, XMM3
2107EMIT_INSTR_PLUS_ICEBP vphsubsw, XMM1, XMM2, FSxBX
2108EMIT_INSTR_PLUS_ICEBP vphsubsw, YMM1, YMM2, YMM3
2109EMIT_INSTR_PLUS_ICEBP vphsubsw, YMM1, YMM2, FSxBX
2110 %if TMPL_BITS == 64
2111EMIT_INSTR_PLUS_ICEBP phsubsw, XMM8, XMM9
2112EMIT_INSTR_PLUS_ICEBP phsubsw, XMM8, FSxBX
2113EMIT_INSTR_PLUS_ICEBP vphsubsw, XMM8, XMM9, XMM10
2114EMIT_INSTR_PLUS_ICEBP vphsubsw, XMM8, XMM9, FSxBX
2115EMIT_INSTR_PLUS_ICEBP vphsubsw, YMM8, YMM9, YMM10
2116EMIT_INSTR_PLUS_ICEBP vphsubsw, YMM8, YMM9, FSxBX
2117 %endif
2118
2119;
2120; [V]PMADDUBSW
2121;
2122EMIT_INSTR_PLUS_ICEBP pmaddubsw, MM1, MM2
2123EMIT_INSTR_PLUS_ICEBP pmaddubsw, MM1, FSxBX
2124EMIT_INSTR_PLUS_ICEBP pmaddubsw, XMM1, XMM2
2125EMIT_INSTR_PLUS_ICEBP pmaddubsw, XMM1, FSxBX
2126EMIT_INSTR_PLUS_ICEBP vpmaddubsw, XMM1, XMM2, XMM3
2127EMIT_INSTR_PLUS_ICEBP vpmaddubsw, XMM1, XMM2, FSxBX
2128EMIT_INSTR_PLUS_ICEBP vpmaddubsw, YMM1, YMM2, YMM3
2129EMIT_INSTR_PLUS_ICEBP vpmaddubsw, YMM1, YMM2, FSxBX
2130 %if TMPL_BITS == 64
2131EMIT_INSTR_PLUS_ICEBP pmaddubsw, XMM8, XMM9
2132EMIT_INSTR_PLUS_ICEBP pmaddubsw, XMM8, FSxBX
2133EMIT_INSTR_PLUS_ICEBP vpmaddubsw, XMM8, XMM9, XMM10
2134EMIT_INSTR_PLUS_ICEBP vpmaddubsw, XMM8, XMM9, FSxBX
2135EMIT_INSTR_PLUS_ICEBP vpmaddubsw, YMM8, YMM9, YMM10
2136EMIT_INSTR_PLUS_ICEBP vpmaddubsw, YMM8, YMM9, FSxBX
2137 %endif
2138
2139;
2140; [V]PMULHRSW
2141;
2142EMIT_INSTR_PLUS_ICEBP pmulhrsw, MM1, MM2
2143EMIT_INSTR_PLUS_ICEBP pmulhrsw, MM1, FSxBX
2144EMIT_INSTR_PLUS_ICEBP pmulhrsw, XMM1, XMM2
2145EMIT_INSTR_PLUS_ICEBP pmulhrsw, XMM1, FSxBX
2146EMIT_INSTR_PLUS_ICEBP vpmulhrsw, XMM1, XMM2, XMM3
2147EMIT_INSTR_PLUS_ICEBP vpmulhrsw, XMM1, XMM2, FSxBX
2148EMIT_INSTR_PLUS_ICEBP vpmulhrsw, YMM1, YMM2, YMM3
2149EMIT_INSTR_PLUS_ICEBP vpmulhrsw, YMM1, YMM2, FSxBX
2150 %if TMPL_BITS == 64
2151EMIT_INSTR_PLUS_ICEBP pmulhrsw, XMM8, XMM9
2152EMIT_INSTR_PLUS_ICEBP pmulhrsw, XMM8, FSxBX
2153EMIT_INSTR_PLUS_ICEBP vpmulhrsw, XMM8, XMM9, XMM10
2154EMIT_INSTR_PLUS_ICEBP vpmulhrsw, XMM8, XMM9, FSxBX
2155EMIT_INSTR_PLUS_ICEBP vpmulhrsw, YMM8, YMM9, YMM10
2156EMIT_INSTR_PLUS_ICEBP vpmulhrsw, YMM8, YMM9, FSxBX
2157 %endif
2158
2159;
2160; [V]PSADBW
2161;
2162EMIT_INSTR_PLUS_ICEBP psadbw, MM1, MM2
2163EMIT_INSTR_PLUS_ICEBP psadbw, MM1, FSxBX
2164EMIT_INSTR_PLUS_ICEBP psadbw, XMM1, XMM2
2165EMIT_INSTR_PLUS_ICEBP psadbw, XMM1, FSxBX
2166EMIT_INSTR_PLUS_ICEBP vpsadbw, XMM1, XMM2, XMM3
2167EMIT_INSTR_PLUS_ICEBP vpsadbw, XMM1, XMM2, FSxBX
2168EMIT_INSTR_PLUS_ICEBP vpsadbw, YMM1, YMM2, YMM3
2169EMIT_INSTR_PLUS_ICEBP vpsadbw, YMM1, YMM2, FSxBX
2170 %if TMPL_BITS == 64
2171EMIT_INSTR_PLUS_ICEBP psadbw, XMM8, XMM9
2172EMIT_INSTR_PLUS_ICEBP psadbw, XMM8, FSxBX
2173EMIT_INSTR_PLUS_ICEBP vpsadbw, XMM8, XMM9, XMM10
2174EMIT_INSTR_PLUS_ICEBP vpsadbw, XMM8, XMM9, FSxBX
2175EMIT_INSTR_PLUS_ICEBP vpsadbw, YMM8, YMM9, YMM10
2176EMIT_INSTR_PLUS_ICEBP vpsadbw, YMM8, YMM9, FSxBX
2177 %endif
2178
2179;
2180; [V]PMULDQ
2181;
2182EMIT_INSTR_PLUS_ICEBP pmuldq, XMM1, XMM2
2183EMIT_INSTR_PLUS_ICEBP pmuldq, XMM1, FSxBX
2184EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM1, XMM2, XMM3
2185EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM1, XMM2, FSxBX
2186EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM1, YMM2, YMM3
2187EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM1, YMM2, FSxBX
2188 %if TMPL_BITS == 64
2189EMIT_INSTR_PLUS_ICEBP pmuldq, XMM8, XMM9
2190EMIT_INSTR_PLUS_ICEBP pmuldq, XMM8, FSxBX
2191EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM8, XMM9, XMM10
2192EMIT_INSTR_PLUS_ICEBP vpmuldq, XMM8, XMM9, FSxBX
2193EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM8, YMM9, YMM10
2194EMIT_INSTR_PLUS_ICEBP vpmuldq, YMM8, YMM9, FSxBX
2195 %endif
2196
2197;
2198; [V]PMULUDQ
2199;
2200EMIT_INSTR_PLUS_ICEBP pmuludq, MM1, MM2
2201EMIT_INSTR_PLUS_ICEBP pmuludq, MM1, FSxBX
2202EMIT_INSTR_PLUS_ICEBP pmuludq, XMM1, XMM2
2203EMIT_INSTR_PLUS_ICEBP pmuludq, XMM1, FSxBX
2204EMIT_INSTR_PLUS_ICEBP vpmuludq, XMM1, XMM2, XMM3
2205EMIT_INSTR_PLUS_ICEBP vpmuludq, XMM1, XMM2, FSxBX
2206EMIT_INSTR_PLUS_ICEBP vpmuludq, YMM1, YMM2, YMM3
2207EMIT_INSTR_PLUS_ICEBP vpmuludq, YMM1, YMM2, FSxBX
2208 %if TMPL_BITS == 64
2209EMIT_INSTR_PLUS_ICEBP pmuludq, XMM8, XMM9
2210EMIT_INSTR_PLUS_ICEBP pmuludq, XMM8, FSxBX
2211EMIT_INSTR_PLUS_ICEBP vpmuludq, XMM8, XMM9, XMM10
2212EMIT_INSTR_PLUS_ICEBP vpmuludq, XMM8, XMM9, FSxBX
2213EMIT_INSTR_PLUS_ICEBP vpmuludq, YMM8, YMM9, YMM10
2214EMIT_INSTR_PLUS_ICEBP vpmuludq, YMM8, YMM9, FSxBX
2215 %endif
2216
2217;
2218; [V]PUNPCKLPS
2219;
2220EMIT_INSTR_PLUS_ICEBP unpcklps, XMM1, XMM2
2221EMIT_INSTR_PLUS_ICEBP unpcklps, XMM1, FSxBX
2222EMIT_INSTR_PLUS_ICEBP vunpcklps, XMM1, XMM2, XMM3
2223EMIT_INSTR_PLUS_ICEBP vunpcklps, XMM1, XMM2, FSxBX
2224EMIT_INSTR_PLUS_ICEBP vunpcklps, YMM1, YMM2, YMM3
2225EMIT_INSTR_PLUS_ICEBP vunpcklps, YMM1, YMM2, FSxBX
2226 %if TMPL_BITS == 64
2227EMIT_INSTR_PLUS_ICEBP unpcklps, XMM8, XMM9
2228EMIT_INSTR_PLUS_ICEBP unpcklps, XMM8, FSxBX
2229EMIT_INSTR_PLUS_ICEBP vunpcklps, XMM8, XMM9, XMM10
2230EMIT_INSTR_PLUS_ICEBP vunpcklps, XMM8, XMM9, FSxBX
2231EMIT_INSTR_PLUS_ICEBP vunpcklps, YMM8, YMM9, YMM10
2232EMIT_INSTR_PLUS_ICEBP vunpcklps, YMM8, YMM9, FSxBX
2233 %endif
2234
2235;
2236; [V]PUNPCKLPD
2237;
2238EMIT_INSTR_PLUS_ICEBP unpcklpd, XMM1, XMM2
2239EMIT_INSTR_PLUS_ICEBP unpcklpd, XMM1, FSxBX
2240EMIT_INSTR_PLUS_ICEBP vunpcklpd, XMM1, XMM2, XMM3
2241EMIT_INSTR_PLUS_ICEBP vunpcklpd, XMM1, XMM2, FSxBX
2242EMIT_INSTR_PLUS_ICEBP vunpcklpd, YMM1, YMM2, YMM3
2243EMIT_INSTR_PLUS_ICEBP vunpcklpd, YMM1, YMM2, FSxBX
2244 %if TMPL_BITS == 64
2245EMIT_INSTR_PLUS_ICEBP unpcklpd, XMM8, XMM9
2246EMIT_INSTR_PLUS_ICEBP unpcklpd, XMM8, FSxBX
2247EMIT_INSTR_PLUS_ICEBP vunpcklpd, XMM8, XMM9, XMM10
2248EMIT_INSTR_PLUS_ICEBP vunpcklpd, XMM8, XMM9, FSxBX
2249EMIT_INSTR_PLUS_ICEBP vunpcklpd, YMM8, YMM9, YMM10
2250EMIT_INSTR_PLUS_ICEBP vunpcklpd, YMM8, YMM9, FSxBX
2251 %endif
2252
2253;
2254; [V]PUNPCKHPS
2255;
2256EMIT_INSTR_PLUS_ICEBP unpckhps, XMM1, XMM2
2257EMIT_INSTR_PLUS_ICEBP unpckhps, XMM1, FSxBX
2258EMIT_INSTR_PLUS_ICEBP vunpckhps, XMM1, XMM2, XMM3
2259EMIT_INSTR_PLUS_ICEBP vunpckhps, XMM1, XMM2, FSxBX
2260EMIT_INSTR_PLUS_ICEBP vunpckhps, YMM1, YMM2, YMM3
2261EMIT_INSTR_PLUS_ICEBP vunpckhps, YMM1, YMM2, FSxBX
2262 %if TMPL_BITS == 64
2263EMIT_INSTR_PLUS_ICEBP unpckhps, XMM8, XMM9
2264EMIT_INSTR_PLUS_ICEBP unpckhps, XMM8, FSxBX
2265EMIT_INSTR_PLUS_ICEBP vunpckhps, XMM8, XMM9, XMM10
2266EMIT_INSTR_PLUS_ICEBP vunpckhps, XMM8, XMM9, FSxBX
2267EMIT_INSTR_PLUS_ICEBP vunpckhps, YMM8, YMM9, YMM10
2268EMIT_INSTR_PLUS_ICEBP vunpckhps, YMM8, YMM9, FSxBX
2269 %endif
2270
2271;
2272; [V]PUNPCKHPD
2273;
2274EMIT_INSTR_PLUS_ICEBP unpckhpd, XMM1, XMM2
2275EMIT_INSTR_PLUS_ICEBP unpckhpd, XMM1, FSxBX
2276EMIT_INSTR_PLUS_ICEBP vunpckhpd, XMM1, XMM2, XMM3
2277EMIT_INSTR_PLUS_ICEBP vunpckhpd, XMM1, XMM2, FSxBX
2278EMIT_INSTR_PLUS_ICEBP vunpckhpd, YMM1, YMM2, YMM3
2279EMIT_INSTR_PLUS_ICEBP vunpckhpd, YMM1, YMM2, FSxBX
2280 %if TMPL_BITS == 64
2281EMIT_INSTR_PLUS_ICEBP unpckhpd, XMM8, XMM9
2282EMIT_INSTR_PLUS_ICEBP unpckhpd, XMM8, FSxBX
2283EMIT_INSTR_PLUS_ICEBP vunpckhpd, XMM8, XMM9, XMM10
2284EMIT_INSTR_PLUS_ICEBP vunpckhpd, XMM8, XMM9, FSxBX
2285EMIT_INSTR_PLUS_ICEBP vunpckhpd, YMM8, YMM9, YMM10
2286EMIT_INSTR_PLUS_ICEBP vunpckhpd, YMM8, YMM9, FSxBX
2287 %endif
2288
2289;
2290; [V]PMOVSXBW
2291;
2292EMIT_INSTR_PLUS_ICEBP pmovsxbw, XMM1, XMM2
2293EMIT_INSTR_PLUS_ICEBP pmovsxbw, XMM1, FSxBX
2294EMIT_INSTR_PLUS_ICEBP vpmovsxbw, XMM1, XMM2
2295EMIT_INSTR_PLUS_ICEBP vpmovsxbw, XMM1, FSxBX
2296EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, XMM2
2297EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM1, FSxBX
2298 %if TMPL_BITS == 64
2299EMIT_INSTR_PLUS_ICEBP pmovsxbw, XMM9, XMM8
2300EMIT_INSTR_PLUS_ICEBP pmovsxbw, XMM9, FSxBX
2301EMIT_INSTR_PLUS_ICEBP vpmovsxbw, XMM9, XMM8
2302EMIT_INSTR_PLUS_ICEBP vpmovsxbw, XMM9, FSxBX
2303EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM9, XMM8
2304EMIT_INSTR_PLUS_ICEBP vpmovsxbw, YMM9, FSxBX
2305 %endif
2306
2307;
2308; [V]PMOVSXBD
2309;
2310EMIT_INSTR_PLUS_ICEBP pmovsxbd, XMM1, XMM2
2311EMIT_INSTR_PLUS_ICEBP pmovsxbd, XMM1, FSxBX
2312EMIT_INSTR_PLUS_ICEBP vpmovsxbd, XMM1, XMM2
2313EMIT_INSTR_PLUS_ICEBP vpmovsxbd, XMM1, FSxBX
2314EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, XMM2
2315EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM1, FSxBX
2316 %if TMPL_BITS == 64
2317EMIT_INSTR_PLUS_ICEBP pmovsxbd, XMM9, XMM8
2318EMIT_INSTR_PLUS_ICEBP pmovsxbd, XMM9, FSxBX
2319EMIT_INSTR_PLUS_ICEBP vpmovsxbd, XMM9, XMM8
2320EMIT_INSTR_PLUS_ICEBP vpmovsxbd, XMM9, FSxBX
2321EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM9, XMM8
2322EMIT_INSTR_PLUS_ICEBP vpmovsxbd, YMM9, FSxBX
2323 %endif
2324
2325;
2326; [V]PMOVSXBQ
2327;
2328EMIT_INSTR_PLUS_ICEBP pmovsxbq, XMM1, XMM2
2329EMIT_INSTR_PLUS_ICEBP pmovsxbq, XMM1, FSxBX
2330EMIT_INSTR_PLUS_ICEBP vpmovsxbq, XMM1, XMM2
2331EMIT_INSTR_PLUS_ICEBP vpmovsxbq, XMM1, FSxBX
2332EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, XMM2
2333EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM1, FSxBX
2334 %if TMPL_BITS == 64
2335EMIT_INSTR_PLUS_ICEBP pmovsxbq, XMM9, XMM8
2336EMIT_INSTR_PLUS_ICEBP pmovsxbq, XMM9, FSxBX
2337EMIT_INSTR_PLUS_ICEBP vpmovsxbq, XMM9, XMM8
2338EMIT_INSTR_PLUS_ICEBP vpmovsxbq, XMM9, FSxBX
2339EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM9, XMM8
2340EMIT_INSTR_PLUS_ICEBP vpmovsxbq, YMM9, FSxBX
2341 %endif
2342
2343;
2344; [V]PMOVSXWD
2345;
2346EMIT_INSTR_PLUS_ICEBP pmovsxwd, XMM1, XMM2
2347EMIT_INSTR_PLUS_ICEBP pmovsxwd, XMM1, FSxBX
2348EMIT_INSTR_PLUS_ICEBP vpmovsxwd, XMM1, XMM2
2349EMIT_INSTR_PLUS_ICEBP vpmovsxwd, XMM1, FSxBX
2350EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, XMM2
2351EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM1, FSxBX
2352 %if TMPL_BITS == 64
2353EMIT_INSTR_PLUS_ICEBP pmovsxwd, XMM9, XMM8
2354EMIT_INSTR_PLUS_ICEBP pmovsxwd, XMM9, FSxBX
2355EMIT_INSTR_PLUS_ICEBP vpmovsxwd, XMM9, XMM8
2356EMIT_INSTR_PLUS_ICEBP vpmovsxwd, XMM9, FSxBX
2357EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM9, XMM8
2358EMIT_INSTR_PLUS_ICEBP vpmovsxwd, YMM9, FSxBX
2359 %endif
2360
2361;
2362; [V]PMOVSXWQ
2363;
2364EMIT_INSTR_PLUS_ICEBP pmovsxwq, XMM1, XMM2
2365EMIT_INSTR_PLUS_ICEBP pmovsxwq, XMM1, FSxBX
2366EMIT_INSTR_PLUS_ICEBP vpmovsxwq, XMM1, XMM2
2367EMIT_INSTR_PLUS_ICEBP vpmovsxwq, XMM1, FSxBX
2368EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, XMM2
2369EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM1, FSxBX
2370 %if TMPL_BITS == 64
2371EMIT_INSTR_PLUS_ICEBP pmovsxwq, XMM9, XMM8
2372EMIT_INSTR_PLUS_ICEBP pmovsxwq, XMM9, FSxBX
2373EMIT_INSTR_PLUS_ICEBP vpmovsxwq, XMM9, XMM8
2374EMIT_INSTR_PLUS_ICEBP vpmovsxwq, XMM9, FSxBX
2375EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM9, XMM8
2376EMIT_INSTR_PLUS_ICEBP vpmovsxwq, YMM9, FSxBX
2377 %endif
2378
2379;
2380; [V]PMOVSXDQ
2381;
2382EMIT_INSTR_PLUS_ICEBP pmovsxdq, XMM1, XMM2
2383EMIT_INSTR_PLUS_ICEBP pmovsxdq, XMM1, FSxBX
2384EMIT_INSTR_PLUS_ICEBP vpmovsxdq, XMM1, XMM2
2385EMIT_INSTR_PLUS_ICEBP vpmovsxdq, XMM1, FSxBX
2386EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, XMM2
2387EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM1, FSxBX
2388 %if TMPL_BITS == 64
2389EMIT_INSTR_PLUS_ICEBP pmovsxdq, XMM9, XMM8
2390EMIT_INSTR_PLUS_ICEBP pmovsxdq, XMM9, FSxBX
2391EMIT_INSTR_PLUS_ICEBP vpmovsxdq, XMM9, XMM8
2392EMIT_INSTR_PLUS_ICEBP vpmovsxdq, XMM9, FSxBX
2393EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM9, XMM8
2394EMIT_INSTR_PLUS_ICEBP vpmovsxdq, YMM9, FSxBX
2395 %endif
2396
2397;
2398; [V]PMOVZXBW
2399;
2400EMIT_INSTR_PLUS_ICEBP pmovzxbw, XMM1, XMM2
2401EMIT_INSTR_PLUS_ICEBP pmovzxbw, XMM1, FSxBX
2402EMIT_INSTR_PLUS_ICEBP vpmovzxbw, XMM1, XMM2
2403EMIT_INSTR_PLUS_ICEBP vpmovzxbw, XMM1, FSxBX
2404EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, XMM2
2405EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM1, FSxBX
2406 %if TMPL_BITS == 64
2407EMIT_INSTR_PLUS_ICEBP pmovzxbw, XMM9, XMM8
2408EMIT_INSTR_PLUS_ICEBP pmovzxbw, XMM9, FSxBX
2409EMIT_INSTR_PLUS_ICEBP vpmovzxbw, XMM9, XMM8
2410EMIT_INSTR_PLUS_ICEBP vpmovzxbw, XMM9, FSxBX
2411EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM9, XMM8
2412EMIT_INSTR_PLUS_ICEBP vpmovzxbw, YMM9, FSxBX
2413 %endif
2414
2415;
2416; [V]PMOVZXBD
2417;
2418EMIT_INSTR_PLUS_ICEBP pmovzxbd, XMM1, XMM2
2419EMIT_INSTR_PLUS_ICEBP pmovzxbd, XMM1, FSxBX
2420EMIT_INSTR_PLUS_ICEBP vpmovzxbd, XMM1, XMM2
2421EMIT_INSTR_PLUS_ICEBP vpmovzxbd, XMM1, FSxBX
2422EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, XMM2
2423EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM1, FSxBX
2424 %if TMPL_BITS == 64
2425EMIT_INSTR_PLUS_ICEBP pmovzxbd, XMM9, XMM8
2426EMIT_INSTR_PLUS_ICEBP pmovzxbd, XMM9, FSxBX
2427EMIT_INSTR_PLUS_ICEBP vpmovzxbd, XMM9, XMM8
2428EMIT_INSTR_PLUS_ICEBP vpmovzxbd, XMM9, FSxBX
2429EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM9, XMM8
2430EMIT_INSTR_PLUS_ICEBP vpmovzxbd, YMM9, FSxBX
2431 %endif
2432
2433;
2434; [V]PMOVZXBQ
2435;
2436EMIT_INSTR_PLUS_ICEBP pmovzxbq, XMM1, XMM2
2437EMIT_INSTR_PLUS_ICEBP pmovzxbq, XMM1, FSxBX
2438EMIT_INSTR_PLUS_ICEBP vpmovzxbq, XMM1, XMM2
2439EMIT_INSTR_PLUS_ICEBP vpmovzxbq, XMM1, FSxBX
2440EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, XMM2
2441EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM1, FSxBX
2442 %if TMPL_BITS == 64
2443EMIT_INSTR_PLUS_ICEBP pmovzxbq, XMM9, XMM8
2444EMIT_INSTR_PLUS_ICEBP pmovzxbq, XMM9, FSxBX
2445EMIT_INSTR_PLUS_ICEBP vpmovzxbq, XMM9, XMM8
2446EMIT_INSTR_PLUS_ICEBP vpmovzxbq, XMM9, FSxBX
2447EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM9, XMM8
2448EMIT_INSTR_PLUS_ICEBP vpmovzxbq, YMM9, FSxBX
2449 %endif
2450
2451;
2452; [V]PMOVZXWD
2453;
2454EMIT_INSTR_PLUS_ICEBP pmovzxwd, XMM1, XMM2
2455EMIT_INSTR_PLUS_ICEBP pmovzxwd, XMM1, FSxBX
2456EMIT_INSTR_PLUS_ICEBP vpmovzxwd, XMM1, XMM2
2457EMIT_INSTR_PLUS_ICEBP vpmovzxwd, XMM1, FSxBX
2458EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, XMM2
2459EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM1, FSxBX
2460 %if TMPL_BITS == 64
2461EMIT_INSTR_PLUS_ICEBP pmovzxwd, XMM9, XMM8
2462EMIT_INSTR_PLUS_ICEBP pmovzxwd, XMM9, FSxBX
2463EMIT_INSTR_PLUS_ICEBP vpmovzxwd, XMM9, XMM8
2464EMIT_INSTR_PLUS_ICEBP vpmovzxwd, XMM9, FSxBX
2465EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM9, XMM8
2466EMIT_INSTR_PLUS_ICEBP vpmovzxwd, YMM9, FSxBX
2467 %endif
2468
2469;
2470; [V]PMOVZXWQ
2471;
2472EMIT_INSTR_PLUS_ICEBP pmovzxwq, XMM1, XMM2
2473EMIT_INSTR_PLUS_ICEBP pmovzxwq, XMM1, FSxBX
2474EMIT_INSTR_PLUS_ICEBP vpmovzxwq, XMM1, XMM2
2475EMIT_INSTR_PLUS_ICEBP vpmovzxwq, XMM1, FSxBX
2476EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, XMM2
2477EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM1, FSxBX
2478 %if TMPL_BITS == 64
2479EMIT_INSTR_PLUS_ICEBP pmovzxwq, XMM9, XMM8
2480EMIT_INSTR_PLUS_ICEBP pmovzxwq, XMM9, FSxBX
2481EMIT_INSTR_PLUS_ICEBP vpmovzxwq, XMM9, XMM8
2482EMIT_INSTR_PLUS_ICEBP vpmovzxwq, XMM9, FSxBX
2483EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM9, XMM8
2484EMIT_INSTR_PLUS_ICEBP vpmovzxwq, YMM9, FSxBX
2485 %endif
2486
2487;
2488; [V]PMOVZXDQ
2489;
2490EMIT_INSTR_PLUS_ICEBP pmovzxdq, XMM1, XMM2
2491EMIT_INSTR_PLUS_ICEBP pmovzxdq, XMM1, FSxBX
2492EMIT_INSTR_PLUS_ICEBP vpmovzxdq, XMM1, XMM2
2493EMIT_INSTR_PLUS_ICEBP vpmovzxdq, XMM1, FSxBX
2494EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, XMM2
2495EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM1, FSxBX
2496 %if TMPL_BITS == 64
2497EMIT_INSTR_PLUS_ICEBP pmovzxdq, XMM9, XMM8
2498EMIT_INSTR_PLUS_ICEBP pmovzxdq, XMM9, FSxBX
2499EMIT_INSTR_PLUS_ICEBP vpmovzxdq, XMM9, XMM8
2500EMIT_INSTR_PLUS_ICEBP vpmovzxdq, XMM9, FSxBX
2501EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM9, XMM8
2502EMIT_INSTR_PLUS_ICEBP vpmovzxdq, YMM9, FSxBX
2503 %endif
2504
2505;
2506; [V]SHUFPS
2507;
2508EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 0FFh
2509EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 0FFh
2510EMIT_INSTR_PLUS_ICEBP shufps, XMM1, XMM2, 000h
2511EMIT_INSTR_PLUS_ICEBP shufps, XMM1, FSxBX, 000h
2512
2513EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 0FFh
2514EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 0FFh
2515EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, XMM3, 000h
2516EMIT_INSTR_PLUS_ICEBP vshufps, XMM1, XMM2, FSxBX, 000h
2517
2518EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 0FFh
2519EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 0FFh
2520EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, YMM3, 000h
2521EMIT_INSTR_PLUS_ICEBP vshufps, YMM1, YMM2, FSxBX, 000h
2522
2523 %if TMPL_BITS == 64
2524EMIT_INSTR_PLUS_ICEBP shufps, XMM8, XMM9, 0FFh
2525EMIT_INSTR_PLUS_ICEBP shufps, XMM8, FSxBX, 0FFh
2526EMIT_INSTR_PLUS_ICEBP shufps, XMM8, XMM9, 000h
2527EMIT_INSTR_PLUS_ICEBP shufps, XMM8, FSxBX, 000h
2528
2529EMIT_INSTR_PLUS_ICEBP vshufps, XMM8, XMM9, XMM10, 0FFh
2530EMIT_INSTR_PLUS_ICEBP vshufps, XMM8, XMM9, FSxBX, 0FFh
2531EMIT_INSTR_PLUS_ICEBP vshufps, XMM8, XMM9, XMM10, 000h
2532EMIT_INSTR_PLUS_ICEBP vshufps, XMM8, XMM9, FSxBX, 000h
2533
2534EMIT_INSTR_PLUS_ICEBP vshufps, YMM8, YMM9, YMM10, 0FFh
2535EMIT_INSTR_PLUS_ICEBP vshufps, YMM8, YMM9, FSxBX, 0FFh
2536EMIT_INSTR_PLUS_ICEBP vshufps, YMM8, YMM9, YMM10, 000h
2537EMIT_INSTR_PLUS_ICEBP vshufps, YMM8, YMM9, FSxBX, 000h
2538 %endif
2539
2540;
2541; [V]SHUFPD
2542;
2543EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 0FFh
2544EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 0FFh
2545EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, XMM2, 000h
2546EMIT_INSTR_PLUS_ICEBP shufpd, XMM1, FSxBX, 000h
2547
2548EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 0FFh
2549EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 0FFh
2550EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, XMM3, 000h
2551EMIT_INSTR_PLUS_ICEBP vshufpd, XMM1, XMM2, FSxBX, 000h
2552
2553EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 0FFh
2554EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 0FFh
2555EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, YMM3, 000h
2556EMIT_INSTR_PLUS_ICEBP vshufpd, YMM1, YMM2, FSxBX, 000h
2557
2558 %if TMPL_BITS == 64
2559EMIT_INSTR_PLUS_ICEBP shufpd, XMM8, XMM9, 0FFh
2560EMIT_INSTR_PLUS_ICEBP shufpd, XMM8, FSxBX, 0FFh
2561EMIT_INSTR_PLUS_ICEBP shufpd, XMM8, XMM9, 000h
2562EMIT_INSTR_PLUS_ICEBP shufpd, XMM8, FSxBX, 000h
2563
2564EMIT_INSTR_PLUS_ICEBP vshufpd, XMM8, XMM9, XMM10, 0FFh
2565EMIT_INSTR_PLUS_ICEBP vshufpd, XMM8, XMM9, FSxBX, 0FFh
2566EMIT_INSTR_PLUS_ICEBP vshufpd, XMM8, XMM9, XMM10, 000h
2567EMIT_INSTR_PLUS_ICEBP vshufpd, XMM8, XMM9, FSxBX, 000h
2568
2569EMIT_INSTR_PLUS_ICEBP vshufpd, YMM8, YMM9, YMM10, 0FFh
2570EMIT_INSTR_PLUS_ICEBP vshufpd, YMM8, YMM9, FSxBX, 0FFh
2571EMIT_INSTR_PLUS_ICEBP vshufpd, YMM8, YMM9, YMM10, 000h
2572EMIT_INSTR_PLUS_ICEBP vshufpd, YMM8, YMM9, FSxBX, 000h
2573 %endif
2574
2575;
2576; [V]LDDQU
2577;
2578EMIT_INSTR_PLUS_ICEBP lddqu, XMM1, FSxBX
2579EMIT_INSTR_PLUS_ICEBP vlddqu, XMM1, FSxBX
2580EMIT_INSTR_PLUS_ICEBP vlddqu, YMM1, FSxBX
2581 %if TMPL_BITS == 64
2582EMIT_INSTR_PLUS_ICEBP lddqu, XMM10, FSxBX
2583EMIT_INSTR_PLUS_ICEBP vlddqu, XMM11, FSxBX
2584EMIT_INSTR_PLUS_ICEBP vlddqu, YMM12, FSxBX
2585 %endif
2586
2587;
2588; [V]PHMINPOSUW
2589;
2590EMIT_INSTR_PLUS_ICEBP phminposuw, XMM1, XMM2
2591EMIT_INSTR_PLUS_ICEBP phminposuw, XMM1, FSxBX
2592EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, XMM2
2593EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM1, FSxBX
2594 %if TMPL_BITS == 64
2595EMIT_INSTR_PLUS_ICEBP phminposuw, XMM9, XMM8
2596EMIT_INSTR_PLUS_ICEBP phminposuw, XMM9, FSxBX
2597EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, XMM8
2598EMIT_INSTR_PLUS_ICEBP vphminposuw, XMM9, FSxBX
2599 %endif
2600
2601;
2602; [V]PBLENDVB
2603;
2604EMIT_INSTR_PLUS_ICEBP pblendvb, XMM1, XMM2
2605EMIT_INSTR_PLUS_ICEBP pblendvb, XMM1, FSxBX
2606EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, XMM3, XMM4
2607EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM1, XMM2, FSxBX, XMM4
2608 %if TMPL_BITS == 64
2609EMIT_INSTR_PLUS_ICEBP pblendvb, XMM8, XMM9
2610EMIT_INSTR_PLUS_ICEBP pblendvb, XMM8, FSxBX
2611EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM8, XMM9, XMM10, XMM11
2612EMIT_INSTR_PLUS_ICEBP vpblendvb, XMM8, XMM9, FSxBX, XMM11
2613 %endif
2614
2615EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, YMM3, YMM4
2616EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM1, YMM2, FSxBX, YMM4
2617 %if TMPL_BITS == 64
2618EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM8, YMM9, YMM10, YMM11
2619EMIT_INSTR_PLUS_ICEBP vpblendvb, YMM8, YMM9, FSxBX, YMM11
2620 %endif
2621
2622;
2623; [V]BLENDVPS
2624;
2625EMIT_INSTR_PLUS_ICEBP blendvps, XMM1, XMM2
2626EMIT_INSTR_PLUS_ICEBP blendvps, XMM1, FSxBX
2627EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, XMM3, XMM4
2628EMIT_INSTR_PLUS_ICEBP vblendvps, XMM1, XMM2, FSxBX, XMM4
2629 %if TMPL_BITS == 64
2630EMIT_INSTR_PLUS_ICEBP blendvps, XMM8, XMM9
2631EMIT_INSTR_PLUS_ICEBP blendvps, XMM8, FSxBX
2632EMIT_INSTR_PLUS_ICEBP vblendvps, XMM8, XMM9, XMM10, XMM11
2633EMIT_INSTR_PLUS_ICEBP vblendvps, XMM8, XMM9, FSxBX, XMM11
2634 %endif
2635
2636EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, YMM3, YMM4
2637EMIT_INSTR_PLUS_ICEBP vblendvps, YMM1, YMM2, FSxBX, YMM4
2638 %if TMPL_BITS == 64
2639EMIT_INSTR_PLUS_ICEBP vblendvps, YMM8, YMM9, YMM10, YMM11
2640EMIT_INSTR_PLUS_ICEBP vblendvps, YMM8, YMM9, FSxBX, YMM11
2641 %endif
2642
2643;
2644; [V]BLENDVPD
2645;
2646EMIT_INSTR_PLUS_ICEBP blendvpd, XMM1, XMM2
2647EMIT_INSTR_PLUS_ICEBP blendvpd, XMM1, FSxBX
2648EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, XMM3, XMM4
2649EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM1, XMM2, FSxBX, XMM4
2650 %if TMPL_BITS == 64
2651EMIT_INSTR_PLUS_ICEBP blendvpd, XMM8, XMM9
2652EMIT_INSTR_PLUS_ICEBP blendvpd, XMM8, FSxBX
2653EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM8, XMM9, XMM10, XMM11
2654EMIT_INSTR_PLUS_ICEBP vblendvpd, XMM8, XMM9, FSxBX, XMM11
2655 %endif
2656
2657EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, YMM3, YMM4
2658EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM1, YMM2, FSxBX, YMM4
2659 %if TMPL_BITS == 64
2660EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM8, YMM9, YMM10, YMM11
2661EMIT_INSTR_PLUS_ICEBP vblendvpd, YMM8, YMM9, FSxBX, YMM11
2662 %endif
2663
2664;
2665; [V]PALIGNR
2666;
2667EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 0FFh
2668EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 0FFh
2669EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 000h
2670EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 000h
2671EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 003h
2672EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 003h
2673EMIT_INSTR_PLUS_ICEBP palignr, MM1, MM2, 009h
2674EMIT_INSTR_PLUS_ICEBP palignr, MM1, FSxBX, 009h
2675
2676EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 0FFh
2677EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 0FFh
2678EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 000h
2679EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 000h
2680EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 003h
2681EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 003h
2682EMIT_INSTR_PLUS_ICEBP palignr, XMM1, XMM2, 013h
2683EMIT_INSTR_PLUS_ICEBP palignr, XMM1, FSxBX, 013h
2684
2685EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 0FFh
2686EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 0FFh
2687EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 000h
2688EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 000h
2689EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 003h
2690EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 003h
2691EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, XMM3, 013h
2692EMIT_INSTR_PLUS_ICEBP vpalignr, XMM1, XMM2, FSxBX, 013h
2693
2694EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 0FFh
2695EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 0FFh
2696EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 000h
2697EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 000h
2698EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 003h
2699EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 003h
2700EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, YMM3, 013h
2701EMIT_INSTR_PLUS_ICEBP vpalignr, YMM1, YMM2, FSxBX, 013h
2702
2703 %if TMPL_BITS == 64
2704EMIT_INSTR_PLUS_ICEBP palignr, XMM8, XMM9, 0FFh
2705EMIT_INSTR_PLUS_ICEBP palignr, XMM8, FSxBX, 0FFh
2706EMIT_INSTR_PLUS_ICEBP palignr, XMM8, XMM9, 000h
2707EMIT_INSTR_PLUS_ICEBP palignr, XMM8, FSxBX, 000h
2708EMIT_INSTR_PLUS_ICEBP palignr, XMM8, XMM9, 003h
2709EMIT_INSTR_PLUS_ICEBP palignr, XMM8, FSxBX, 003h
2710EMIT_INSTR_PLUS_ICEBP palignr, XMM8, XMM9, 013h
2711EMIT_INSTR_PLUS_ICEBP palignr, XMM8, FSxBX, 013h
2712
2713EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, XMM10, 0FFh
2714EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, FSxBX, 0FFh
2715EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, XMM10, 000h
2716EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, FSxBX, 000h
2717EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, XMM10, 003h
2718EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, FSxBX, 003h
2719EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, XMM10, 013h
2720EMIT_INSTR_PLUS_ICEBP vpalignr, XMM8, XMM9, FSxBX, 013h
2721
2722EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, YMM10, 0FFh
2723EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, FSxBX, 0FFh
2724EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, YMM10, 000h
2725EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, FSxBX, 000h
2726EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, YMM10, 003h
2727EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, FSxBX, 003h
2728EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, YMM10, 013h
2729EMIT_INSTR_PLUS_ICEBP vpalignr, YMM8, YMM9, FSxBX, 013h
2730 %endif
2731
2732;
2733; [V]PBLENDW
2734;
2735EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 0FFh
2736EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 0FFh
2737EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, XMM2, 000h
2738EMIT_INSTR_PLUS_ICEBP pblendw, XMM1, FSxBX, 000h
2739
2740EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 0FFh
2741EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 0FFh
2742EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, XMM3, 000h
2743EMIT_INSTR_PLUS_ICEBP vpblendw, XMM1, XMM2, FSxBX, 000h
2744
2745EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 0FFh
2746EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 0FFh
2747EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, YMM3, 000h
2748EMIT_INSTR_PLUS_ICEBP vpblendw, YMM1, YMM2, FSxBX, 000h
2749
2750 %if TMPL_BITS == 64
2751EMIT_INSTR_PLUS_ICEBP pblendw, XMM8, XMM9, 0FFh
2752EMIT_INSTR_PLUS_ICEBP pblendw, XMM8, FSxBX, 0FFh
2753EMIT_INSTR_PLUS_ICEBP pblendw, XMM8, XMM9, 000h
2754EMIT_INSTR_PLUS_ICEBP pblendw, XMM8, FSxBX, 000h
2755
2756EMIT_INSTR_PLUS_ICEBP vpblendw, XMM8, XMM9, XMM10, 0FFh
2757EMIT_INSTR_PLUS_ICEBP vpblendw, XMM8, XMM9, FSxBX, 0FFh
2758EMIT_INSTR_PLUS_ICEBP vpblendw, XMM8, XMM9, XMM10, 000h
2759EMIT_INSTR_PLUS_ICEBP vpblendw, XMM8, XMM9, FSxBX, 000h
2760
2761EMIT_INSTR_PLUS_ICEBP vpblendw, YMM8, YMM9, YMM10, 0FFh
2762EMIT_INSTR_PLUS_ICEBP vpblendw, YMM8, YMM9, FSxBX, 0FFh
2763EMIT_INSTR_PLUS_ICEBP vpblendw, YMM8, YMM9, YMM10, 000h
2764EMIT_INSTR_PLUS_ICEBP vpblendw, YMM8, YMM9, FSxBX, 000h
2765 %endif
2766
2767;
2768; [V]BLENDPS
2769;
2770EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 0FFh
2771EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 0FFh
2772EMIT_INSTR_PLUS_ICEBP blendps, XMM1, XMM2, 000h
2773EMIT_INSTR_PLUS_ICEBP blendps, XMM1, FSxBX, 000h
2774
2775EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 0FFh
2776EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 0FFh
2777EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, XMM3, 000h
2778EMIT_INSTR_PLUS_ICEBP vblendps, XMM1, XMM2, FSxBX, 000h
2779
2780EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 0FFh
2781EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 0FFh
2782EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, YMM3, 000h
2783EMIT_INSTR_PLUS_ICEBP vblendps, YMM1, YMM2, FSxBX, 000h
2784
2785 %if TMPL_BITS == 64
2786EMIT_INSTR_PLUS_ICEBP blendps, XMM8, XMM9, 0FFh
2787EMIT_INSTR_PLUS_ICEBP blendps, XMM8, FSxBX, 0FFh
2788EMIT_INSTR_PLUS_ICEBP blendps, XMM8, XMM9, 000h
2789EMIT_INSTR_PLUS_ICEBP blendps, XMM8, FSxBX, 000h
2790
2791EMIT_INSTR_PLUS_ICEBP vblendps, XMM8, XMM9, XMM10, 0FFh
2792EMIT_INSTR_PLUS_ICEBP vblendps, XMM8, XMM9, FSxBX, 0FFh
2793EMIT_INSTR_PLUS_ICEBP vblendps, XMM8, XMM9, XMM10, 000h
2794EMIT_INSTR_PLUS_ICEBP vblendps, XMM8, XMM9, FSxBX, 000h
2795
2796EMIT_INSTR_PLUS_ICEBP vblendps, YMM8, YMM9, YMM10, 0FFh
2797EMIT_INSTR_PLUS_ICEBP vblendps, YMM8, YMM9, FSxBX, 0FFh
2798EMIT_INSTR_PLUS_ICEBP vblendps, YMM8, YMM9, YMM10, 000h
2799EMIT_INSTR_PLUS_ICEBP vblendps, YMM8, YMM9, FSxBX, 000h
2800 %endif
2801
2802;
2803; [V]BLENDPD
2804;
2805EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 0FFh
2806EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 0FFh
2807EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, XMM2, 000h
2808EMIT_INSTR_PLUS_ICEBP blendpd, XMM1, FSxBX, 000h
2809
2810EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 0FFh
2811EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 0FFh
2812EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, XMM3, 000h
2813EMIT_INSTR_PLUS_ICEBP vblendpd, XMM1, XMM2, FSxBX, 000h
2814
2815EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 0FFh
2816EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 0FFh
2817EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, YMM3, 000h
2818EMIT_INSTR_PLUS_ICEBP vblendpd, YMM1, YMM2, FSxBX, 000h
2819
2820 %if TMPL_BITS == 64
2821EMIT_INSTR_PLUS_ICEBP blendpd, XMM8, XMM9, 0FFh
2822EMIT_INSTR_PLUS_ICEBP blendpd, XMM8, FSxBX, 0FFh
2823EMIT_INSTR_PLUS_ICEBP blendpd, XMM8, XMM9, 000h
2824EMIT_INSTR_PLUS_ICEBP blendpd, XMM8, FSxBX, 000h
2825
2826EMIT_INSTR_PLUS_ICEBP vblendpd, XMM8, XMM9, XMM10, 0FFh
2827EMIT_INSTR_PLUS_ICEBP vblendpd, XMM8, XMM9, FSxBX, 0FFh
2828EMIT_INSTR_PLUS_ICEBP vblendpd, XMM8, XMM9, XMM10, 000h
2829EMIT_INSTR_PLUS_ICEBP vblendpd, XMM8, XMM9, FSxBX, 000h
2830
2831EMIT_INSTR_PLUS_ICEBP vblendpd, YMM8, YMM9, YMM10, 0FFh
2832EMIT_INSTR_PLUS_ICEBP vblendpd, YMM8, YMM9, FSxBX, 0FFh
2833EMIT_INSTR_PLUS_ICEBP vblendpd, YMM8, YMM9, YMM10, 000h
2834EMIT_INSTR_PLUS_ICEBP vblendpd, YMM8, YMM9, FSxBX, 000h
2835 %endif
2836
2837;
2838; [V]PCLMULQDQ
2839;
2840EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 0FFh
2841EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 0FFh
2842EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, XMM2, 000h
2843EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM1, FSxBX, 000h
2844
2845EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 0FFh
2846EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 0FFh
2847EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, XMM3, 000h
2848EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM1, XMM2, FSxBX, 000h
2849
2850 %if TMPL_BITS == 64
2851EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM8, XMM9, 0FFh
2852EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM8, FSxBX, 0FFh
2853EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM8, XMM9, 000h
2854EMIT_INSTR_PLUS_ICEBP pclmulqdq, XMM8, FSxBX, 000h
2855
2856EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM8, XMM9, XMM10, 0FFh
2857EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM8, XMM9, FSxBX, 0FFh
2858EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM8, XMM9, XMM10, 000h
2859EMIT_INSTR_PLUS_ICEBP vpclmulqdq, XMM8, XMM9, FSxBX, 000h
2860 %endif
2861
2862;
2863; [V]PINSRW
2864;
2865EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 0FFh
2866EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 0FFh
2867EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, EDX, 000h
2868EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, FSxBX, 000h
2869
2870EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 0FFh
2871EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 0FFh
2872EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, EDX, 000h
2873EMIT_INSTR_PLUS_ICEBP pinsrw, XMM1, FSxBX, 000h
2874
2875EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 0FFh
2876EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 0FFh
2877EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, EDX, 000h
2878EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM1, XMM2, FSxBX, 000h
2879
2880 %if TMPL_BITS == 64
2881EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, R9D, 0FFh
2882EMIT_INSTR_PLUS_ICEBP pinsrw, MM1, R9D, 000h
2883
2884EMIT_INSTR_PLUS_ICEBP pinsrw, XMM8, R9D, 0FFh
2885EMIT_INSTR_PLUS_ICEBP pinsrw, XMM8, FSxBX, 0FFh
2886EMIT_INSTR_PLUS_ICEBP pinsrw, XMM8, R9D, 000h
2887EMIT_INSTR_PLUS_ICEBP pinsrw, XMM8, FSxBX, 000h
2888
2889EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM8, XMM9, R9D, 0FFh
2890EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM8, XMM9, FSxBX, 0FFh
2891EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM8, XMM9, R9D, 000h
2892EMIT_INSTR_PLUS_ICEBP vpinsrw, XMM8, XMM9, FSxBX, 000h
2893 %endif
2894
2895;
2896; [V]PEXTRW
2897;
2898EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 0FFh
2899EMIT_INSTR_PLUS_ICEBP pextrw, EDX, MM1, 000h
2900
2901EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 0FFh
2902EMIT_INSTR_PLUS_ICEBP pextrw, EDX, XMM1, 000h
2903
2904EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 0FFh
2905EMIT_INSTR_PLUS_ICEBP vpextrw, EDX, XMM1, 000h
2906
2907 %if TMPL_BITS == 64
2908EMIT_INSTR_PLUS_ICEBP pextrw, R9D, MM1, 0FFh
2909EMIT_INSTR_PLUS_ICEBP pextrw, R9D, MM1, 000h
2910
2911; @todo Emits the SSE4.1 0f3a variant EMIT_INSTR_PLUS_ICEBP pextrw, RDX, XMM1, 0FFh
2912; @todo Emits the SSE4.1 0f3a variant EMIT_INSTR_PLUS_ICEBP pextrw, RDX, XMM1, 000h
2913
2914EMIT_INSTR_PLUS_ICEBP pextrw, R9D, XMM8, 0FFh
2915EMIT_INSTR_PLUS_ICEBP pextrw, R9D, XMM8, 000h
2916
2917EMIT_INSTR_PLUS_ICEBP vpextrw, R9D, XMM8, 0FFh
2918EMIT_INSTR_PLUS_ICEBP vpextrw, R9D, XMM8, 000h
2919
2920EMIT_INSTR_PLUS_ICEBP vpextrw, RDX, XMM1, 0FFh
2921EMIT_INSTR_PLUS_ICEBP vpextrw, RDX, XMM1, 000h
2922 %endif
2923
2924;
2925; [V]MOVMSKPS
2926;
2927EMIT_INSTR_PLUS_ICEBP movmskps, EDX, XMM1
2928EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, XMM1
2929EMIT_INSTR_PLUS_ICEBP vmovmskps, EDX, YMM1
2930
2931 %if TMPL_BITS == 64
2932EMIT_INSTR_PLUS_ICEBP movmskps, R9D, XMM8
2933EMIT_INSTR_PLUS_ICEBP movmskps, RDX, XMM1
2934
2935EMIT_INSTR_PLUS_ICEBP vmovmskps, R9D, XMM8
2936EMIT_INSTR_PLUS_ICEBP vmovmskps, RDX, XMM1
2937
2938EMIT_INSTR_PLUS_ICEBP vmovmskps, R9D, YMM8
2939EMIT_INSTR_PLUS_ICEBP vmovmskps, RDX, YMM1
2940 %endif
2941
2942;
2943; [V]MOVMSKPD
2944;
2945EMIT_INSTR_PLUS_ICEBP movmskpd, EDX, XMM1
2946EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, XMM1
2947EMIT_INSTR_PLUS_ICEBP vmovmskpd, EDX, YMM1
2948
2949 %if TMPL_BITS == 64
2950EMIT_INSTR_PLUS_ICEBP movmskpd, R9D, XMM8
2951EMIT_INSTR_PLUS_ICEBP movmskpd, RDX, XMM1
2952
2953EMIT_INSTR_PLUS_ICEBP vmovmskpd, R9D, XMM8
2954EMIT_INSTR_PLUS_ICEBP vmovmskpd, RDX, XMM1
2955
2956EMIT_INSTR_PLUS_ICEBP vmovmskpd, R9D, YMM8
2957EMIT_INSTR_PLUS_ICEBP vmovmskpd, RDX, YMM1
2958 %endif
2959
2960
2961%endif ; BS3_INSTANTIATING_CMN
2962
2963%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