VirtualBox

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

Last change on this file since 107231 was 107231, checked in by vboxsync, 5 months ago

ValidationKit/bootsectors: split bs3-cpu-instr-4 in two; bugref:10658; jiraref:VBP-1209

Adding the cmp[ps][sd] series of instructions makes bs3-cpu-instr-4
too big to fit in a single floppy image; so split it into two images.

  • add bs3-cpu-instr-5 boot image
  • put about half the Stuff in it
  • cleanups noticed along the way
  • noted, but not doing anything about it: bs3-cpu-instr-4 (nor 5, obviously) not mentioned in tdCpuIemInstr1.py
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 81.3 KB
Line 
1; $Id: bs3-cpu-instr-4-template.mac 107231 2024-12-05 07:27:26Z vboxsync $
2;; @file
3; BS3Kit - bs3-cpu-instr-4 & bs3-cpu-instr-5 - SSE, AVX FPU instructions, assembly template.
4;
5
6;
7; Copyright (C) 2024 Oracle and/or its affiliates.
8;
9; This file is part of VirtualBox base platform packages, as
10; available from https://www.virtualbox.org.
11;
12; This program is free software; you can redistribute it and/or
13; modify it under the terms of the GNU General Public License
14; as published by the Free Software Foundation, in version 3 of the
15; License.
16;
17; This program is distributed in the hope that it will be useful, but
18; WITHOUT ANY WARRANTY; without even the implied warranty of
19; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20; General Public License for more details.
21;
22; You should have received a copy of the GNU General Public License
23; along with this program; if not, see <https://www.gnu.org/licenses>.
24;
25; The contents of this file may alternatively be used under the terms
26; of the Common Development and Distribution License Version 1.0
27; (CDDL), a copy of it is provided in the "COPYING.CDDL" file included
28; in the VirtualBox distribution, in which case the provisions of the
29; CDDL are applicable instead of those of the GPL.
30;
31; You may elect to license modified versions of this file under the
32; terms and conditions of either the GPL or the CDDL or both.
33;
34; SPDX-License-Identifier: GPL-3.0-only OR CDDL-1.0
35;
36
37
38;*********************************************************************************************************************************
39;* Header Files *
40;*********************************************************************************************************************************
41%include "bs3kit-template-header.mac" ; setup environment
42
43
44;*********************************************************************************************************************************
45;* External Symbols *
46;*********************************************************************************************************************************
47TMPL_BEGIN_TEXT
48
49
50;
51; Test code snippets containing code which differs between 16-bit, 32-bit
52; and 64-bit CPUs modes.
53;
54%ifdef BS3_INSTANTIATING_CMN
55
56
57;;
58; Variant on BS3_PROC_BEGIN_CMN w/ BS3_PBC_NEAR that prefixes the function
59; with an instruction length byte.
60;
61; ASSUMES the length is between the start of the function and the .again label.
62;
63 %ifndef BS3CPUINSTR4_PROC_BEGIN_CMN_DEFINED
64 %define BS3CPUINSTR4_PROC_BEGIN_CMN_DEFINED
65 %macro BS3CPUINSTR4_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 ; !BS3CPUINSTR4_PROC_BEGIN_CMN_DEFINED
71
72;;
73; FSxBX and its variants allow a memory reference to be embedded into a test
74; instruction. `xBX' adjusts automatically to the addressing model: BX, EBX,
75; or RBX depending on the number of address bits. FSxBX_D and so on allow to
76; force a particular memory reference size; this is necessary for some AVX
77; instructions where the mentioned XMM/YMM/ZMM register size doesn't fully
78; control the memory size to be used. Macros are repeatedly redefined in
79; order to pick up the current address-model-specific `xBX' value. (Other
80; sizes could be defined: B=byte=1, W=word=2, T=tword=10(x87), z=zword=32)
81;
82 %ifndef BS3CPUINSTR4_DEFINE_FSxBX_DEFINED
83 %define BS3CPUINSTR4_DEFINE_FSxBX_DEFINED
84 %macro BS3CPUINSTR4_DEFINE_FSxBX 0
85 %define FSxBX [fs:xBX] ; natural size of the instruction
86 %define FSxBX_D dword [fs:xBX] ; dword = 32 bits = 4 bytes = 2 words
87 %define FSxBX_Q qword [fs:xBX] ; qword = 64 bits = 8 bytes = 4 words
88 %define FSxBX_O oword [fs:xBX] ; oword = 128 bits = 16 bytes = 8 words
89 %define FSxBX_Y yword [fs:xBX] ; yword = 256 bits = 32 bytes = 16 words
90 %endmacro
91 %macro BS3CPUINSTR4_UNDEF_FSxBX 0
92 %undef FSxBX
93 %undef FSxBX_D
94 %undef FSxBX_Q
95 %undef FSxBX_O
96 %undef FSxBX_Y
97 %endmacro
98 %endif ; !BS3CPUINSTR4_DEFINE_FSxBX_DEFINED
99
100;;
101; The EMIT_INSTR_PLUS_ICEBP macros is for creating a common function for and
102; named after a single instruction & args, followed by a looping ICEBP.
103;
104 %ifndef EMIT_INSTR_PLUS_ICEBP_DEFINED
105 %define EMIT_INSTR_PLUS_ICEBP_DEFINED
106
107 %macro EMIT_INSTR_PLUS_ICEBP 2
108BS3CPUINSTR4_PROC_BEGIN_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _icebp
109 BS3CPUINSTR4_DEFINE_FSxBX
110 %1 %2
111 BS3CPUINSTR4_UNDEF_FSxBX
112.again:
113 icebp
114 jmp .again
115BS3_PROC_END_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _icebp
116 %endmacro
117
118 %macro EMIT_INSTR_PLUS_ICEBP 3
119BS3CPUINSTR4_PROC_BEGIN_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
120 BS3CPUINSTR4_DEFINE_FSxBX
121 %1 %2, %3
122 BS3CPUINSTR4_UNDEF_FSxBX
123.again:
124 icebp
125 jmp .again
126BS3_PROC_END_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _icebp
127 %endmacro
128
129 %macro EMIT_INSTR_PLUS_ICEBP 4
130BS3CPUINSTR4_PROC_BEGIN_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
131 BS3CPUINSTR4_DEFINE_FSxBX
132 %1 %2, %3, %4
133 BS3CPUINSTR4_UNDEF_FSxBX
134.again:
135 icebp
136 jmp .again
137BS3_PROC_END_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _icebp
138 %endmacro
139
140 %macro EMIT_INSTR_PLUS_ICEBP 5
141BS3CPUINSTR4_PROC_BEGIN_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
142 BS3CPUINSTR4_DEFINE_FSxBX
143 %1 %2, %3, %4, %5
144 BS3CPUINSTR4_UNDEF_FSxBX
145.again:
146 icebp
147 jmp .again
148BS3_PROC_END_CMN bs3CpuInstr4_ %+ %1 %+ _ %+ %2 %+ _ %+ %3 %+ _ %+ %4 %+ _ %+ %5 %+ _icebp
149 %endmacro
150
151 %macro EMIT_INSTR_PLUS_ICEBP_C64 2
152 %if TMPL_BITS == 64
153 EMIT_INSTR_PLUS_ICEBP %1, %2
154 %endif
155 %endmacro
156
157 %macro EMIT_INSTR_PLUS_ICEBP_C64 3
158 %if TMPL_BITS == 64
159 EMIT_INSTR_PLUS_ICEBP %1, %2, %3
160 %endif
161 %endmacro
162
163 %macro EMIT_INSTR_PLUS_ICEBP_C64 4
164 %if TMPL_BITS == 64
165 EMIT_INSTR_PLUS_ICEBP %1, %2, %3, %4
166 %endif
167 %endmacro
168
169 %macro EMIT_INSTR_PLUS_ICEBP_C64 5
170 %if TMPL_BITS == 64
171 EMIT_INSTR_PLUS_ICEBP %1, %2, %3, %4, %5
172 %endif
173 %endmacro
174
175 %endif ; !EMIT_INSTR_PLUS_ICEBP_DEFINED
176
177 %ifdef BS3_CPU_INSTR_4
178
179;
180;; [v]addps
181;
182EMIT_INSTR_PLUS_ICEBP addps, XMM1, XMM2
183EMIT_INSTR_PLUS_ICEBP addps, XMM1, FSxBX
184EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, XMM9
185EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, FSxBX
186
187EMIT_INSTR_PLUS_ICEBP vaddps, XMM1, XMM2, XMM3
188EMIT_INSTR_PLUS_ICEBP vaddps, XMM1, XMM2, FSxBX
189EMIT_INSTR_PLUS_ICEBP_C64 vaddps, XMM8, XMM9, XMM10
190EMIT_INSTR_PLUS_ICEBP_C64 vaddps, XMM8, XMM9, FSxBX
191
192EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM2, YMM3
193EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM2, FSxBX
194EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM9, YMM10
195EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM9, FSxBX
196
197EMIT_INSTR_PLUS_ICEBP addps, XMM1, XMM1
198EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, XMM8
199EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, YMM1
200EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, YMM2
201EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM8, YMM8
202EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, FSxBX
203
204;
205;; [v]addpd
206;
207EMIT_INSTR_PLUS_ICEBP addpd, XMM1, XMM2
208EMIT_INSTR_PLUS_ICEBP addpd, XMM1, FSxBX
209EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, XMM9
210EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, FSxBX
211
212EMIT_INSTR_PLUS_ICEBP vaddpd, XMM1, XMM2, XMM3
213EMIT_INSTR_PLUS_ICEBP vaddpd, XMM1, XMM2, FSxBX
214EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, XMM8, XMM9, XMM10
215EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, XMM8, XMM9, FSxBX
216
217EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM2, YMM3
218EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM2, FSxBX
219EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM9, YMM10
220EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM9, FSxBX
221
222EMIT_INSTR_PLUS_ICEBP addpd, XMM1, XMM1
223EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, XMM8
224EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, YMM1
225EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, YMM2
226EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM8, YMM8
227EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, FSxBX
228
229;
230;; [v]addss
231;
232EMIT_INSTR_PLUS_ICEBP addss, XMM1, XMM2
233EMIT_INSTR_PLUS_ICEBP addss, XMM1, FSxBX
234EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, XMM9
235EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, FSxBX
236
237EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM2, XMM3
238EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM2, FSxBX
239EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM9, XMM10
240EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM9, FSxBX
241
242EMIT_INSTR_PLUS_ICEBP addss, XMM1, XMM1
243EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, XMM8
244EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, XMM1
245EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, XMM2
246EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM8, XMM8
247EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, FSxBX
248
249;
250;; [v]addsd
251;
252EMIT_INSTR_PLUS_ICEBP addsd, XMM1, XMM2
253EMIT_INSTR_PLUS_ICEBP addsd, XMM1, FSxBX
254EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, XMM9
255EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, FSxBX
256
257EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM2, XMM3
258EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM2, FSxBX
259EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM9, XMM10
260EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM9, FSxBX
261
262EMIT_INSTR_PLUS_ICEBP addsd, XMM1, XMM1
263EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, XMM8
264EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, XMM1
265EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, XMM2
266EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM8, XMM8
267EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, FSxBX
268
269;
270;; [v]haddps
271;
272EMIT_INSTR_PLUS_ICEBP haddps, XMM1, XMM2
273EMIT_INSTR_PLUS_ICEBP haddps, XMM1, FSxBX
274EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, XMM9
275EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, FSxBX
276
277EMIT_INSTR_PLUS_ICEBP vhaddps, XMM1, XMM2, XMM3
278EMIT_INSTR_PLUS_ICEBP vhaddps, XMM1, XMM2, FSxBX
279EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, XMM8, XMM9, XMM10
280EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, XMM8, XMM9, FSxBX
281
282EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM2, YMM3
283EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM2, FSxBX
284EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM9, YMM10
285EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM9, FSxBX
286
287EMIT_INSTR_PLUS_ICEBP haddps, XMM1, XMM1
288EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, XMM8
289EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM1
290EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM2
291EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM8, YMM8
292EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, FSxBX
293
294;
295;; [v]haddpd
296;
297EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, XMM2
298EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, FSxBX
299EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, XMM9
300EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, FSxBX
301
302EMIT_INSTR_PLUS_ICEBP vhaddpd, XMM1, XMM2, XMM3
303EMIT_INSTR_PLUS_ICEBP vhaddpd, XMM1, XMM2, FSxBX
304EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, XMM8, XMM9, XMM10
305EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, XMM8, XMM9, FSxBX
306
307EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM2, YMM3
308EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM2, FSxBX
309EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, YMM10
310EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, FSxBX
311
312EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, XMM1
313EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, XMM8
314EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM1
315EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM2
316EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM8, YMM8
317EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, FSxBX
318
319;
320;; [v]subps
321;
322EMIT_INSTR_PLUS_ICEBP subps, XMM1, XMM2
323EMIT_INSTR_PLUS_ICEBP subps, XMM1, FSxBX
324EMIT_INSTR_PLUS_ICEBP_C64 subps, XMM8, XMM9
325EMIT_INSTR_PLUS_ICEBP_C64 subps, XMM8, FSxBX
326
327EMIT_INSTR_PLUS_ICEBP vsubps, XMM1, XMM2, XMM3
328EMIT_INSTR_PLUS_ICEBP vsubps, XMM1, XMM2, FSxBX
329EMIT_INSTR_PLUS_ICEBP_C64 vsubps, XMM8, XMM9, XMM10
330EMIT_INSTR_PLUS_ICEBP_C64 vsubps, XMM8, XMM9, FSxBX
331
332EMIT_INSTR_PLUS_ICEBP vsubps, YMM1, YMM2, YMM3
333EMIT_INSTR_PLUS_ICEBP vsubps, YMM1, YMM2, FSxBX
334EMIT_INSTR_PLUS_ICEBP_C64 vsubps, YMM8, YMM9, YMM10
335EMIT_INSTR_PLUS_ICEBP_C64 vsubps, YMM8, YMM9, FSxBX
336
337;
338;; [v]subpd
339;
340EMIT_INSTR_PLUS_ICEBP subpd, XMM1, XMM2
341EMIT_INSTR_PLUS_ICEBP subpd, XMM1, FSxBX
342EMIT_INSTR_PLUS_ICEBP_C64 subpd, XMM8, XMM9
343EMIT_INSTR_PLUS_ICEBP_C64 subpd, XMM8, FSxBX
344
345EMIT_INSTR_PLUS_ICEBP vsubpd, XMM1, XMM2, XMM3
346EMIT_INSTR_PLUS_ICEBP vsubpd, XMM1, XMM2, FSxBX
347EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, XMM8, XMM9, XMM10
348EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, XMM8, XMM9, FSxBX
349
350EMIT_INSTR_PLUS_ICEBP vsubpd, YMM1, YMM2, YMM3
351EMIT_INSTR_PLUS_ICEBP vsubpd, YMM1, YMM2, FSxBX
352EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, YMM8, YMM9, YMM10
353EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, YMM8, YMM9, FSxBX
354
355;
356;; [v]subss
357;
358EMIT_INSTR_PLUS_ICEBP subss, XMM1, XMM2
359EMIT_INSTR_PLUS_ICEBP subss, XMM1, FSxBX
360EMIT_INSTR_PLUS_ICEBP_C64 subss, XMM8, XMM9
361EMIT_INSTR_PLUS_ICEBP_C64 subss, XMM8, FSxBX
362
363EMIT_INSTR_PLUS_ICEBP vsubss, XMM1, XMM2, XMM3
364EMIT_INSTR_PLUS_ICEBP vsubss, XMM1, XMM2, FSxBX
365EMIT_INSTR_PLUS_ICEBP_C64 vsubss, XMM8, XMM9, XMM10
366EMIT_INSTR_PLUS_ICEBP_C64 vsubss, XMM8, XMM9, FSxBX
367
368;
369;; [v]subsd
370;
371EMIT_INSTR_PLUS_ICEBP subsd, XMM1, XMM2
372EMIT_INSTR_PLUS_ICEBP subsd, XMM1, FSxBX
373EMIT_INSTR_PLUS_ICEBP_C64 subsd, XMM8, XMM9
374EMIT_INSTR_PLUS_ICEBP_C64 subsd, XMM8, FSxBX
375
376EMIT_INSTR_PLUS_ICEBP vsubsd, XMM1, XMM2, XMM3
377EMIT_INSTR_PLUS_ICEBP vsubsd, XMM1, XMM2, FSxBX
378EMIT_INSTR_PLUS_ICEBP_C64 vsubsd, XMM8, XMM9, XMM10
379EMIT_INSTR_PLUS_ICEBP_C64 vsubsd, XMM8, XMM9, FSxBX
380
381;
382;; [v]hsubps
383;
384EMIT_INSTR_PLUS_ICEBP hsubps, XMM1, XMM2
385EMIT_INSTR_PLUS_ICEBP hsubps, XMM1, FSxBX
386EMIT_INSTR_PLUS_ICEBP_C64 hsubps, XMM8, XMM9
387EMIT_INSTR_PLUS_ICEBP_C64 hsubps, XMM8, FSxBX
388
389EMIT_INSTR_PLUS_ICEBP vhsubps, XMM1, XMM2, XMM3
390EMIT_INSTR_PLUS_ICEBP vhsubps, XMM1, XMM2, FSxBX
391EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, XMM8, XMM9, XMM10
392EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, XMM8, XMM9, FSxBX
393
394EMIT_INSTR_PLUS_ICEBP vhsubps, YMM1, YMM2, YMM3
395EMIT_INSTR_PLUS_ICEBP vhsubps, YMM1, YMM2, FSxBX
396EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, YMM8, YMM9, YMM10
397EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, YMM8, YMM9, FSxBX
398
399;
400;; [v]hsubpd
401;
402EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, XMM2
403EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, FSxBX
404EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, XMM9
405EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, FSxBX
406
407EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, XMM3
408EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, FSxBX
409EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, XMM10
410EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, FSxBX
411
412EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, YMM3
413EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, FSxBX
414EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, YMM10
415EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, FSxBX
416
417;
418;; [v]mulps
419;
420EMIT_INSTR_PLUS_ICEBP mulps, XMM1, XMM2
421EMIT_INSTR_PLUS_ICEBP mulps, XMM1, FSxBX
422EMIT_INSTR_PLUS_ICEBP_C64 mulps, XMM8, XMM9
423EMIT_INSTR_PLUS_ICEBP_C64 mulps, XMM8, FSxBX
424
425EMIT_INSTR_PLUS_ICEBP vmulps, XMM1, XMM2, XMM3
426EMIT_INSTR_PLUS_ICEBP vmulps, XMM1, XMM2, FSxBX
427EMIT_INSTR_PLUS_ICEBP_C64 vmulps, XMM8, XMM9, XMM10
428EMIT_INSTR_PLUS_ICEBP_C64 vmulps, XMM8, XMM9, FSxBX
429
430EMIT_INSTR_PLUS_ICEBP vmulps, YMM1, YMM2, YMM3
431EMIT_INSTR_PLUS_ICEBP vmulps, YMM1, YMM2, FSxBX
432EMIT_INSTR_PLUS_ICEBP_C64 vmulps, YMM8, YMM9, YMM10
433EMIT_INSTR_PLUS_ICEBP_C64 vmulps, YMM8, YMM9, FSxBX
434
435;
436;; [v]mulpd
437;
438EMIT_INSTR_PLUS_ICEBP mulpd, XMM1, XMM2
439EMIT_INSTR_PLUS_ICEBP mulpd, XMM1, FSxBX
440EMIT_INSTR_PLUS_ICEBP_C64 mulpd, XMM8, XMM9
441EMIT_INSTR_PLUS_ICEBP_C64 mulpd, XMM8, FSxBX
442
443EMIT_INSTR_PLUS_ICEBP vmulpd, XMM1, XMM2, XMM3
444EMIT_INSTR_PLUS_ICEBP vmulpd, XMM1, XMM2, FSxBX
445EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, XMM8, XMM9, XMM10
446EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, XMM8, XMM9, FSxBX
447
448EMIT_INSTR_PLUS_ICEBP vmulpd, YMM1, YMM2, YMM3
449EMIT_INSTR_PLUS_ICEBP vmulpd, YMM1, YMM2, FSxBX
450EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, YMM8, YMM9, YMM10
451EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, YMM8, YMM9, FSxBX
452
453;
454;; [v]mulss
455;
456EMIT_INSTR_PLUS_ICEBP mulss, XMM1, XMM2
457EMIT_INSTR_PLUS_ICEBP mulss, XMM1, FSxBX
458EMIT_INSTR_PLUS_ICEBP_C64 mulss, XMM8, XMM9
459EMIT_INSTR_PLUS_ICEBP_C64 mulss, XMM8, FSxBX
460
461EMIT_INSTR_PLUS_ICEBP vmulss, XMM1, XMM2, XMM3
462EMIT_INSTR_PLUS_ICEBP vmulss, XMM1, XMM2, FSxBX
463EMIT_INSTR_PLUS_ICEBP_C64 vmulss, XMM8, XMM9, XMM10
464EMIT_INSTR_PLUS_ICEBP_C64 vmulss, XMM8, XMM9, FSxBX
465
466;
467;; [v]mulsd
468;
469EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, XMM2
470EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, FSxBX
471EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, XMM9
472EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, FSxBX
473
474EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, XMM3
475EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, FSxBX
476EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, XMM10
477EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, FSxBX
478
479;
480;; [v]divps
481;
482EMIT_INSTR_PLUS_ICEBP divps, XMM1, XMM2
483EMIT_INSTR_PLUS_ICEBP divps, XMM1, FSxBX
484EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, XMM9
485EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, FSxBX
486
487EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, XMM3
488EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, FSxBX
489EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, XMM10
490EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, FSxBX
491
492EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, YMM3
493EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, FSxBX
494EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, YMM10
495EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, FSxBX
496
497;
498;; [v]divpd
499;
500EMIT_INSTR_PLUS_ICEBP divpd, XMM1, XMM2
501EMIT_INSTR_PLUS_ICEBP divpd, XMM1, FSxBX
502EMIT_INSTR_PLUS_ICEBP_C64 divpd, XMM8, XMM9
503EMIT_INSTR_PLUS_ICEBP_C64 divpd, XMM8, FSxBX
504
505EMIT_INSTR_PLUS_ICEBP vdivpd, XMM1, XMM2, XMM3
506EMIT_INSTR_PLUS_ICEBP vdivpd, XMM1, XMM2, FSxBX
507EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, XMM8, XMM9, XMM10
508EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, XMM8, XMM9, FSxBX
509
510EMIT_INSTR_PLUS_ICEBP vdivpd, YMM1, YMM2, YMM3
511EMIT_INSTR_PLUS_ICEBP vdivpd, YMM1, YMM2, FSxBX
512EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, YMM8, YMM9, YMM10
513EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, YMM8, YMM9, FSxBX
514
515;
516;; [v]divss
517;
518EMIT_INSTR_PLUS_ICEBP divss, XMM1, XMM2
519EMIT_INSTR_PLUS_ICEBP divss, XMM1, FSxBX
520EMIT_INSTR_PLUS_ICEBP_C64 divss, XMM8, XMM9
521EMIT_INSTR_PLUS_ICEBP_C64 divss, XMM8, FSxBX
522
523EMIT_INSTR_PLUS_ICEBP vdivss, XMM1, XMM2, XMM3
524EMIT_INSTR_PLUS_ICEBP vdivss, XMM1, XMM2, FSxBX
525EMIT_INSTR_PLUS_ICEBP_C64 vdivss, XMM8, XMM9, XMM10
526EMIT_INSTR_PLUS_ICEBP_C64 vdivss, XMM8, XMM9, FSxBX
527
528;
529;; [v]divsd
530;
531EMIT_INSTR_PLUS_ICEBP divsd, XMM1, XMM2
532EMIT_INSTR_PLUS_ICEBP divsd, XMM1, FSxBX
533EMIT_INSTR_PLUS_ICEBP_C64 divsd, XMM8, XMM9
534EMIT_INSTR_PLUS_ICEBP_C64 divsd, XMM8, FSxBX
535
536EMIT_INSTR_PLUS_ICEBP vdivsd, XMM1, XMM2, XMM3
537EMIT_INSTR_PLUS_ICEBP vdivsd, XMM1, XMM2, FSxBX
538EMIT_INSTR_PLUS_ICEBP_C64 vdivsd, XMM8, XMM9, XMM10
539EMIT_INSTR_PLUS_ICEBP_C64 vdivsd, XMM8, XMM9, FSxBX
540
541;
542;; [v]addsubps
543;
544EMIT_INSTR_PLUS_ICEBP addsubps, XMM1, XMM2
545EMIT_INSTR_PLUS_ICEBP addsubps, XMM1, FSxBX
546EMIT_INSTR_PLUS_ICEBP_C64 addsubps, XMM8, XMM9
547EMIT_INSTR_PLUS_ICEBP_C64 addsubps, XMM8, FSxBX
548
549EMIT_INSTR_PLUS_ICEBP vaddsubps, XMM1, XMM2, XMM3
550EMIT_INSTR_PLUS_ICEBP vaddsubps, XMM1, XMM2, FSxBX
551EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, XMM8, XMM9, XMM10
552EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, XMM8, XMM9, FSxBX
553
554EMIT_INSTR_PLUS_ICEBP vaddsubps, YMM1, YMM2, YMM3
555EMIT_INSTR_PLUS_ICEBP vaddsubps, YMM1, YMM2, FSxBX
556EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, YMM13, YMM14, YMM15
557EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, YMM13, YMM14, FSxBX
558
559;
560;; [v]addsubpd
561;
562EMIT_INSTR_PLUS_ICEBP addsubpd, XMM1, XMM2
563EMIT_INSTR_PLUS_ICEBP addsubpd, XMM1, FSxBX
564EMIT_INSTR_PLUS_ICEBP_C64 addsubpd, XMM8, XMM9
565EMIT_INSTR_PLUS_ICEBP_C64 addsubpd, XMM8, FSxBX
566
567EMIT_INSTR_PLUS_ICEBP vaddsubpd, XMM1, XMM2, XMM3
568EMIT_INSTR_PLUS_ICEBP vaddsubpd, XMM1, XMM2, FSxBX
569EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, XMM8, XMM9, XMM10
570EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, XMM8, XMM9, FSxBX
571
572EMIT_INSTR_PLUS_ICEBP vaddsubpd, YMM1, YMM2, YMM3
573EMIT_INSTR_PLUS_ICEBP vaddsubpd, YMM1, YMM2, FSxBX
574EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, YMM13, YMM14, YMM15
575EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, YMM13, YMM14, FSxBX
576
577;
578;; [v]maxps
579;
580EMIT_INSTR_PLUS_ICEBP maxps, XMM1, XMM2
581EMIT_INSTR_PLUS_ICEBP maxps, XMM1, FSxBX
582EMIT_INSTR_PLUS_ICEBP_C64 maxps, XMM8, XMM9
583EMIT_INSTR_PLUS_ICEBP_C64 maxps, XMM8, FSxBX
584
585EMIT_INSTR_PLUS_ICEBP vmaxps, XMM1, XMM2, XMM3
586EMIT_INSTR_PLUS_ICEBP vmaxps, XMM1, XMM2, FSxBX
587EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, XMM8, XMM9, XMM10
588EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, XMM8, XMM9, FSxBX
589
590EMIT_INSTR_PLUS_ICEBP vmaxps, YMM1, YMM2, YMM3
591EMIT_INSTR_PLUS_ICEBP vmaxps, YMM1, YMM2, FSxBX
592EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, YMM8, YMM9, YMM10
593EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, YMM8, YMM9, FSxBX
594
595;
596;; [v]maxpd
597;
598EMIT_INSTR_PLUS_ICEBP maxpd, XMM1, XMM2
599EMIT_INSTR_PLUS_ICEBP maxpd, XMM1, FSxBX
600EMIT_INSTR_PLUS_ICEBP_C64 maxpd, XMM8, XMM9
601EMIT_INSTR_PLUS_ICEBP_C64 maxpd, XMM8, FSxBX
602
603EMIT_INSTR_PLUS_ICEBP vmaxpd, XMM1, XMM2, XMM3
604EMIT_INSTR_PLUS_ICEBP vmaxpd, XMM1, XMM2, FSxBX
605EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, XMM8, XMM9, XMM10
606EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, XMM8, XMM9, FSxBX
607
608EMIT_INSTR_PLUS_ICEBP vmaxpd, YMM1, YMM2, YMM3
609EMIT_INSTR_PLUS_ICEBP vmaxpd, YMM1, YMM2, FSxBX
610EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, YMM8, YMM9, YMM10
611EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, YMM8, YMM9, FSxBX
612
613;
614;; [v]maxss
615;
616EMIT_INSTR_PLUS_ICEBP maxss, XMM3, XMM4
617EMIT_INSTR_PLUS_ICEBP maxss, XMM3, FSxBX
618EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, XMM9
619EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, FSxBX
620
621EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, XMM7
622EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, FSxBX
623EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, XMM10
624EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, FSxBX
625
626;
627;; [v]maxsd
628;
629EMIT_INSTR_PLUS_ICEBP maxsd, XMM3, XMM4
630EMIT_INSTR_PLUS_ICEBP maxsd, XMM3, FSxBX
631EMIT_INSTR_PLUS_ICEBP_C64 maxsd, XMM8, XMM9
632EMIT_INSTR_PLUS_ICEBP_C64 maxsd, XMM8, FSxBX
633
634EMIT_INSTR_PLUS_ICEBP vmaxsd, XMM1, XMM6, XMM7
635EMIT_INSTR_PLUS_ICEBP vmaxsd, XMM1, XMM6, FSxBX
636EMIT_INSTR_PLUS_ICEBP_C64 vmaxsd, XMM8, XMM9, XMM10
637EMIT_INSTR_PLUS_ICEBP_C64 vmaxsd, XMM8, XMM9, FSxBX
638
639;
640;; [v]minps
641;
642EMIT_INSTR_PLUS_ICEBP minps, XMM1, XMM2
643EMIT_INSTR_PLUS_ICEBP minps, XMM1, FSxBX
644EMIT_INSTR_PLUS_ICEBP_C64 minps, XMM8, XMM9
645EMIT_INSTR_PLUS_ICEBP_C64 minps, XMM8, FSxBX
646
647EMIT_INSTR_PLUS_ICEBP vminps, XMM1, XMM2, XMM3
648EMIT_INSTR_PLUS_ICEBP vminps, XMM1, XMM2, FSxBX
649EMIT_INSTR_PLUS_ICEBP_C64 vminps, XMM8, XMM9, XMM10
650EMIT_INSTR_PLUS_ICEBP_C64 vminps, XMM8, XMM9, FSxBX
651
652EMIT_INSTR_PLUS_ICEBP vminps, YMM1, YMM2, YMM3
653EMIT_INSTR_PLUS_ICEBP vminps, YMM1, YMM2, FSxBX
654EMIT_INSTR_PLUS_ICEBP_C64 vminps, YMM8, YMM9, YMM10
655EMIT_INSTR_PLUS_ICEBP_C64 vminps, YMM8, YMM9, FSxBX
656
657;
658;; [v]minpd
659;
660EMIT_INSTR_PLUS_ICEBP minpd, XMM1, XMM2
661EMIT_INSTR_PLUS_ICEBP minpd, XMM1, FSxBX
662EMIT_INSTR_PLUS_ICEBP_C64 minpd, XMM8, XMM9
663EMIT_INSTR_PLUS_ICEBP_C64 minpd, XMM8, FSxBX
664
665EMIT_INSTR_PLUS_ICEBP vminpd, XMM1, XMM2, XMM3
666EMIT_INSTR_PLUS_ICEBP vminpd, XMM1, XMM2, FSxBX
667EMIT_INSTR_PLUS_ICEBP_C64 vminpd, XMM8, XMM9, XMM10
668EMIT_INSTR_PLUS_ICEBP_C64 vminpd, XMM8, XMM9, FSxBX
669
670EMIT_INSTR_PLUS_ICEBP vminpd, YMM1, YMM2, YMM3
671EMIT_INSTR_PLUS_ICEBP vminpd, YMM1, YMM2, FSxBX
672EMIT_INSTR_PLUS_ICEBP_C64 vminpd, YMM8, YMM9, YMM10
673EMIT_INSTR_PLUS_ICEBP_C64 vminpd, YMM8, YMM9, FSxBX
674
675;
676;; [v]minss
677;
678EMIT_INSTR_PLUS_ICEBP minss, XMM3, XMM4
679EMIT_INSTR_PLUS_ICEBP minss, XMM3, FSxBX
680EMIT_INSTR_PLUS_ICEBP_C64 minss, XMM8, XMM9
681EMIT_INSTR_PLUS_ICEBP_C64 minss, XMM8, FSxBX
682
683EMIT_INSTR_PLUS_ICEBP vminss, XMM1, XMM6, XMM7
684EMIT_INSTR_PLUS_ICEBP vminss, XMM1, XMM6, FSxBX
685EMIT_INSTR_PLUS_ICEBP_C64 vminss, XMM8, XMM9, XMM10
686EMIT_INSTR_PLUS_ICEBP_C64 vminss, XMM8, XMM9, FSxBX
687
688;
689;; [v]minsd
690;
691EMIT_INSTR_PLUS_ICEBP minsd, XMM3, XMM4
692EMIT_INSTR_PLUS_ICEBP minsd, XMM3, FSxBX
693EMIT_INSTR_PLUS_ICEBP_C64 minsd, XMM8, XMM9
694EMIT_INSTR_PLUS_ICEBP_C64 minsd, XMM8, FSxBX
695
696EMIT_INSTR_PLUS_ICEBP vminsd, XMM1, XMM6, XMM7
697EMIT_INSTR_PLUS_ICEBP vminsd, XMM1, XMM6, FSxBX
698EMIT_INSTR_PLUS_ICEBP_C64 vminsd, XMM8, XMM9, XMM10
699EMIT_INSTR_PLUS_ICEBP_C64 vminsd, XMM8, XMM9, FSxBX
700
701 %endif ; BS3_CPU_INSTR_4
702
703 %ifdef BS3_CPU_INSTR_5
704
705;
706;; [v]rcpps
707;
708EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, XMM2
709EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, FSxBX
710EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, XMM9
711EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, FSxBX
712
713EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, XMM2
714EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, FSxBX
715EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, XMM9
716EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, FSxBX
717
718EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, YMM2
719EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, FSxBX
720EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, YMM9
721EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, FSxBX
722
723;
724;; [v]rcpss
725;
726EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, XMM2
727EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, FSxBX
728EMIT_INSTR_PLUS_ICEBP_C64 rcpss, XMM8, XMM9
729EMIT_INSTR_PLUS_ICEBP_C64 rcpss, XMM8, FSxBX
730
731EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, XMM3
732EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, FSxBX
733EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, XMM15
734EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, FSxBX
735
736EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, XMM1
737EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, XMM1
738EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, XMM2
739EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, XMM2
740EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, FSxBX
741EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM15, XMM15, XMM15
742EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM15, XMM15, XMM13
743EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, XMM14
744
745;
746;; [v]sqrtps
747;
748EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, XMM2
749EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, FSxBX
750EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, XMM9
751EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, FSxBX
752
753EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, XMM2
754EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, FSxBX
755EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, XMM8, XMM9
756EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, XMM8, FSxBX
757
758EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, YMM2
759EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, FSxBX
760EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, YMM9
761EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, FSxBX
762
763EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, XMM1
764EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, XMM8
765EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, XMM1
766EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, YMM1
767EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, YMM8
768
769;
770;; [v]sqrtpd
771;
772EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, XMM2
773EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, FSxBX
774EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, XMM9
775EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, FSxBX
776
777EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, XMM2
778EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, FSxBX
779EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, XMM8, XMM9
780EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, XMM8, FSxBX
781
782EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, YMM2
783EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, FSxBX
784EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, YMM9
785EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, FSxBX
786
787EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, XMM1
788EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, XMM8
789EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, XMM1
790EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, YMM1
791EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, YMM8
792
793;
794;; [v]sqrtss
795;
796EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, XMM2
797EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, FSxBX
798EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, XMM9
799EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, FSxBX
800
801EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, XMM3
802EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, FSxBX
803EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM9, XMM10
804EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM9, FSxBX
805
806EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, XMM1
807EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, XMM8
808EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, XMM1
809EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, XMM2
810EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, XMM2
811EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM8, XMM8
812EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, FSxBX
813
814;
815;; [v]sqrtsd
816;
817EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, XMM2
818EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, FSxBX
819EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, XMM9
820EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, FSxBX
821
822EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, XMM3
823EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, FSxBX
824EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM9, XMM10
825EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM9, FSxBX
826
827EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, XMM1
828EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, XMM8
829EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, XMM1
830EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, XMM2
831EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, XMM2
832EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM8, XMM8
833EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, FSxBX
834
835;
836;; [v]rsqrtps
837;
838EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, XMM2
839EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, FSxBX
840EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, XMM9
841EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, FSxBX
842
843EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, XMM2
844EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, FSxBX
845EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, XMM8, XMM9
846EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, XMM8, FSxBX
847
848EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, YMM2
849EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, FSxBX
850EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, YMM9
851EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, FSxBX
852
853EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, XMM1
854EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, XMM8
855EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, XMM1
856EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, YMM1
857EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, YMM8
858
859;
860;; [v]rsqrtss
861;
862EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, XMM2
863EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, FSxBX
864EMIT_INSTR_PLUS_ICEBP_C64 rsqrtss, XMM8, XMM9
865EMIT_INSTR_PLUS_ICEBP_C64 rsqrtss, XMM8, FSxBX
866
867EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, XMM3
868EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, FSxBX
869EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM9, XMM10
870EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM9, FSxBX
871
872EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, XMM1
873EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, XMM1
874EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, XMM2
875EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, XMM2
876EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, FSxBX
877EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM8, XMM8
878
879;
880;; [v]dpps
881;
882EMIT_INSTR_PLUS_ICEBP dpps, XMM1, XMM2, 000h
883EMIT_INSTR_PLUS_ICEBP dpps, XMM1, XMM2, 0FFh
884EMIT_INSTR_PLUS_ICEBP dpps, XMM1, XMM2, 0E1h
885EMIT_INSTR_PLUS_ICEBP dpps, XMM1, FSxBX, 000h
886EMIT_INSTR_PLUS_ICEBP dpps, XMM1, FSxBX, 0FFh
887EMIT_INSTR_PLUS_ICEBP dpps, XMM1, FSxBX, 0E1h
888EMIT_INSTR_PLUS_ICEBP_C64 dpps, XMM8, XMM9, 0E1h
889EMIT_INSTR_PLUS_ICEBP_C64 dpps, XMM8, FSxBX, 0E1h
890
891EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, XMM3, 000h
892EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, XMM3, 0FFh
893EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, XMM3, 0E1h
894EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, FSxBX, 000h
895EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, FSxBX, 0FFh
896EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, FSxBX, 0E1h
897EMIT_INSTR_PLUS_ICEBP_C64 vdpps, XMM8, XMM9, XMM10, 0E1h
898EMIT_INSTR_PLUS_ICEBP_C64 vdpps, XMM8, XMM9, FSxBX, 0E1h
899
900EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, YMM3, 000h
901EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, YMM3, 0FFh
902EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, YMM3, 0E1h
903EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, FSxBX, 000h
904EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, FSxBX, 0FFh
905EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, FSxBX, 0E1h
906EMIT_INSTR_PLUS_ICEBP_C64 vdpps, YMM8, YMM9, YMM10, 0E1h
907EMIT_INSTR_PLUS_ICEBP_C64 vdpps, YMM8, YMM9, FSxBX, 0E1h
908
909EMIT_INSTR_PLUS_ICEBP dpps, XMM1, XMM1, 0E1h
910EMIT_INSTR_PLUS_ICEBP_C64 dpps, XMM8, XMM8, 0E1h
911
912EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM1, XMM1, 0E1h
913EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, XMM1, 0E1h
914EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM1, XMM2, 0E1h
915EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM2, XMM2, 0E1h
916EMIT_INSTR_PLUS_ICEBP vdpps, XMM1, XMM1, FSxBX, 0E1h
917EMIT_INSTR_PLUS_ICEBP_C64 vdpps, XMM8, XMM8, XMM8, 0E1h
918EMIT_INSTR_PLUS_ICEBP_C64 vdpps, XMM8, XMM8, FSxBX, 0E1h
919
920EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM1, YMM1, 0E1h
921EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, YMM1, 0E1h
922EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM1, YMM2, 0E1h
923EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM2, YMM2, 0E1h
924EMIT_INSTR_PLUS_ICEBP vdpps, YMM1, YMM1, FSxBX, 0E1h
925EMIT_INSTR_PLUS_ICEBP_C64 vdpps, YMM8, YMM8, YMM8, 0E1h
926EMIT_INSTR_PLUS_ICEBP_C64 vdpps, YMM8, YMM8, FSxBX, 0E1h
927
928;
929;; [v]dppd
930;
931EMIT_INSTR_PLUS_ICEBP dppd, XMM1, XMM2, 000h
932EMIT_INSTR_PLUS_ICEBP dppd, XMM1, XMM2, 0FFh
933EMIT_INSTR_PLUS_ICEBP dppd, XMM1, XMM2, 022h
934EMIT_INSTR_PLUS_ICEBP dppd, XMM1, FSxBX, 000h
935EMIT_INSTR_PLUS_ICEBP dppd, XMM1, FSxBX, 0FFh
936EMIT_INSTR_PLUS_ICEBP dppd, XMM1, FSxBX, 022h
937EMIT_INSTR_PLUS_ICEBP_C64 dppd, XMM8, XMM9, 022h
938EMIT_INSTR_PLUS_ICEBP_C64 dppd, XMM8, FSxBX, 022h
939
940EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, XMM3, 000h
941EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, XMM3, 0FFh
942EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, XMM3, 022h
943EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, FSxBX, 000h
944EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, FSxBX, 0FFh
945EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, FSxBX, 022h
946EMIT_INSTR_PLUS_ICEBP_C64 vdppd, XMM8, XMM9, XMM10, 022h
947EMIT_INSTR_PLUS_ICEBP_C64 vdppd, XMM8, XMM9, FSxBX, 022h
948
949EMIT_INSTR_PLUS_ICEBP dppd, XMM1, XMM1, 022h
950EMIT_INSTR_PLUS_ICEBP_C64 dppd, XMM8, XMM8, 022h
951
952EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM1, XMM1, 022h
953EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, XMM1, 022h
954EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM1, XMM2, 022h
955EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM2, XMM2, 022h
956EMIT_INSTR_PLUS_ICEBP vdppd, XMM1, XMM1, FSxBX, 022h
957EMIT_INSTR_PLUS_ICEBP_C64 vdppd, XMM8, XMM8, XMM8, 022h
958EMIT_INSTR_PLUS_ICEBP_C64 vdppd, XMM8, XMM8, FSxBX, 022h
959
960;
961;; [v]roundps
962;
963EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM1, 008h
964EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 000h
965EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 008h
966EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 009h
967EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00ah
968EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00bh
969EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00ch
970EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00dh
971EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00eh
972EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 00fh
973EMIT_INSTR_PLUS_ICEBP roundps, XMM1, XMM2, 0ffh
974EMIT_INSTR_PLUS_ICEBP roundps, XMM1, FSxBX, 008h
975EMIT_INSTR_PLUS_ICEBP_C64 roundps, XMM8, XMM8, 008h
976EMIT_INSTR_PLUS_ICEBP_C64 roundps, XMM8, XMM9, 008h
977EMIT_INSTR_PLUS_ICEBP_C64 roundps, XMM8, FSxBX, 008h
978
979EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM1, 008h
980EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 000h
981EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 008h
982EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 009h
983EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00ah
984EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00bh
985EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00ch
986EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00dh
987EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00eh
988EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 00fh
989EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, XMM2, 0ffh
990EMIT_INSTR_PLUS_ICEBP vroundps, XMM1, FSxBX, 008h
991EMIT_INSTR_PLUS_ICEBP_C64 vroundps, XMM8, XMM8, 008h
992EMIT_INSTR_PLUS_ICEBP_C64 vroundps, XMM8, XMM9, 008h
993EMIT_INSTR_PLUS_ICEBP_C64 vroundps, XMM8, FSxBX, 008h
994
995EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM1, 008h
996EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 000h
997EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 008h
998EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 009h
999EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00ah
1000EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00bh
1001EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00ch
1002EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00dh
1003EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00eh
1004EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 00fh
1005EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, YMM2, 0ffh
1006EMIT_INSTR_PLUS_ICEBP vroundps, YMM1, FSxBX, 008h
1007EMIT_INSTR_PLUS_ICEBP_C64 vroundps, YMM8, YMM8, 008h
1008EMIT_INSTR_PLUS_ICEBP_C64 vroundps, YMM8, YMM9, 008h
1009EMIT_INSTR_PLUS_ICEBP_C64 vroundps, YMM8, FSxBX, 008h
1010
1011;
1012;; [v]roundpd
1013;
1014EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM1, 008h
1015EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 000h
1016EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 008h
1017EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 009h
1018EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00ah
1019EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00bh
1020EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00ch
1021EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00dh
1022EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00eh
1023EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 00fh
1024EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, XMM2, 0ffh
1025EMIT_INSTR_PLUS_ICEBP roundpd, XMM1, FSxBX, 008h
1026EMIT_INSTR_PLUS_ICEBP_C64 roundpd, XMM8, XMM8, 008h
1027EMIT_INSTR_PLUS_ICEBP_C64 roundpd, XMM8, XMM9, 008h
1028EMIT_INSTR_PLUS_ICEBP_C64 roundpd, XMM8, FSxBX, 008h
1029
1030EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM1, 008h
1031EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 000h
1032EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 008h
1033EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 009h
1034EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00ah
1035EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00bh
1036EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00ch
1037EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00dh
1038EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00eh
1039EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 00fh
1040EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, XMM2, 0ffh
1041EMIT_INSTR_PLUS_ICEBP vroundpd, XMM1, FSxBX, 008h
1042EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, XMM8, XMM8, 008h
1043EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, XMM8, XMM9, 008h
1044EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, XMM8, FSxBX, 008h
1045
1046EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM1, 008h
1047EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 000h
1048EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 008h
1049EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 009h
1050EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00ah
1051EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00bh
1052EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00ch
1053EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00dh
1054EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00eh
1055EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 00fh
1056EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, YMM2, 0ffh
1057EMIT_INSTR_PLUS_ICEBP vroundpd, YMM1, FSxBX, 008h
1058EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, YMM8, YMM8, 008h
1059EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, YMM8, YMM9, 008h
1060EMIT_INSTR_PLUS_ICEBP_C64 vroundpd, YMM8, FSxBX, 008h
1061
1062;
1063;; [v]roundss
1064;
1065EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 000h
1066EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 008h
1067EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 009h
1068EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00ah
1069EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00bh
1070EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00ch
1071EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00dh
1072EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00eh
1073EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 00fh
1074EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM2, 0ffh
1075EMIT_INSTR_PLUS_ICEBP roundss, XMM1, FSxBX, 008h
1076EMIT_INSTR_PLUS_ICEBP_C64 roundss, XMM8, XMM9, 008h
1077EMIT_INSTR_PLUS_ICEBP_C64 roundss, XMM8, FSxBX, 008h
1078
1079EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM1, XMM2, 008h
1080EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM1, FSxBX, 008h
1081EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM1, 008h
1082EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 000h
1083EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 008h
1084EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 009h
1085EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00ah
1086EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00bh
1087EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00ch
1088EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00dh
1089EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00eh
1090EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 00fh
1091EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM3, 0ffh
1092EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, FSxBX, 008h
1093EMIT_INSTR_PLUS_ICEBP_C64 vroundss, XMM8, XMM8, FSxBX, 008h
1094EMIT_INSTR_PLUS_ICEBP_C64 vroundss, XMM8, XMM9, XMM10, 008h
1095EMIT_INSTR_PLUS_ICEBP_C64 vroundss, XMM8, XMM9, FSxBX, 008h
1096
1097EMIT_INSTR_PLUS_ICEBP roundss, XMM1, XMM1, 008h
1098EMIT_INSTR_PLUS_ICEBP_C64 roundss, XMM8, XMM8, 008h
1099EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM1, XMM1, 008h
1100EMIT_INSTR_PLUS_ICEBP vroundss, XMM1, XMM2, XMM2, 008h
1101EMIT_INSTR_PLUS_ICEBP_C64 vroundss, XMM8, XMM8, XMM8, 008h
1102
1103;
1104;; [v]roundsd
1105;
1106EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 000h
1107EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 008h
1108EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 009h
1109EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00ah
1110EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00bh
1111EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00ch
1112EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00dh
1113EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00eh
1114EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 00fh
1115EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM2, 0ffh
1116EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, FSxBX, 008h
1117EMIT_INSTR_PLUS_ICEBP_C64 roundsd, XMM8, XMM9, 008h
1118EMIT_INSTR_PLUS_ICEBP_C64 roundsd, XMM8, FSxBX, 008h
1119
1120EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM1, XMM2, 008h
1121EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM1, FSxBX, 008h
1122EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM1, 008h
1123EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 000h
1124EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 008h
1125EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 009h
1126EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00ah
1127EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00bh
1128EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00ch
1129EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00dh
1130EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00eh
1131EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 00fh
1132EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM3, 0ffh
1133EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, FSxBX, 008h
1134EMIT_INSTR_PLUS_ICEBP_C64 vroundsd, XMM8, XMM8, FSxBX, 008h
1135EMIT_INSTR_PLUS_ICEBP_C64 vroundsd, XMM8, XMM9, XMM10, 008h
1136EMIT_INSTR_PLUS_ICEBP_C64 vroundsd, XMM8, XMM9, FSxBX, 008h
1137
1138EMIT_INSTR_PLUS_ICEBP roundsd, XMM1, XMM1, 008h
1139EMIT_INSTR_PLUS_ICEBP_C64 roundsd, XMM8, XMM8, 008h
1140EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM1, XMM1, 008h
1141EMIT_INSTR_PLUS_ICEBP vroundsd, XMM1, XMM2, XMM2, 008h
1142EMIT_INSTR_PLUS_ICEBP_C64 vroundsd, XMM8, XMM8, XMM8, 008h
1143
1144;
1145;; [v]comiss
1146;
1147EMIT_INSTR_PLUS_ICEBP comiss, XMM1, XMM2
1148EMIT_INSTR_PLUS_ICEBP comiss, XMM1, FSxBX
1149EMIT_INSTR_PLUS_ICEBP comiss, XMM1, XMM1
1150EMIT_INSTR_PLUS_ICEBP_C64 comiss, XMM8, XMM9
1151EMIT_INSTR_PLUS_ICEBP_C64 comiss, XMM8, FSxBX
1152EMIT_INSTR_PLUS_ICEBP_C64 comiss, XMM8, XMM8
1153
1154EMIT_INSTR_PLUS_ICEBP vcomiss, XMM1, XMM2
1155EMIT_INSTR_PLUS_ICEBP vcomiss, XMM1, FSxBX
1156EMIT_INSTR_PLUS_ICEBP vcomiss, XMM1, XMM1
1157EMIT_INSTR_PLUS_ICEBP_C64 vcomiss, XMM8, XMM9
1158EMIT_INSTR_PLUS_ICEBP_C64 vcomiss, XMM8, FSxBX
1159EMIT_INSTR_PLUS_ICEBP_C64 vcomiss, XMM8, XMM8
1160
1161;
1162;; [v]ucomiss
1163;
1164EMIT_INSTR_PLUS_ICEBP ucomiss, XMM1, XMM2
1165EMIT_INSTR_PLUS_ICEBP ucomiss, XMM1, FSxBX
1166EMIT_INSTR_PLUS_ICEBP ucomiss, XMM1, XMM1
1167EMIT_INSTR_PLUS_ICEBP_C64 ucomiss, XMM8, XMM9
1168EMIT_INSTR_PLUS_ICEBP_C64 ucomiss, XMM8, FSxBX
1169EMIT_INSTR_PLUS_ICEBP_C64 ucomiss, XMM8, XMM8
1170
1171EMIT_INSTR_PLUS_ICEBP vucomiss, XMM1, XMM2
1172EMIT_INSTR_PLUS_ICEBP vucomiss, XMM1, FSxBX
1173EMIT_INSTR_PLUS_ICEBP vucomiss, XMM1, XMM1
1174EMIT_INSTR_PLUS_ICEBP_C64 vucomiss, XMM8, XMM9
1175EMIT_INSTR_PLUS_ICEBP_C64 vucomiss, XMM8, FSxBX
1176EMIT_INSTR_PLUS_ICEBP_C64 vucomiss, XMM8, XMM8
1177
1178;
1179;; [v]comisd
1180;
1181EMIT_INSTR_PLUS_ICEBP comisd, XMM1, XMM2
1182EMIT_INSTR_PLUS_ICEBP comisd, XMM1, FSxBX
1183EMIT_INSTR_PLUS_ICEBP comisd, XMM1, XMM1
1184EMIT_INSTR_PLUS_ICEBP_C64 comisd, XMM8, XMM9
1185EMIT_INSTR_PLUS_ICEBP_C64 comisd, XMM8, FSxBX
1186EMIT_INSTR_PLUS_ICEBP_C64 comisd, XMM8, XMM8
1187
1188EMIT_INSTR_PLUS_ICEBP vcomisd, XMM1, XMM2
1189EMIT_INSTR_PLUS_ICEBP vcomisd, XMM1, FSxBX
1190EMIT_INSTR_PLUS_ICEBP vcomisd, XMM1, XMM1
1191EMIT_INSTR_PLUS_ICEBP_C64 vcomisd, XMM8, XMM9
1192EMIT_INSTR_PLUS_ICEBP_C64 vcomisd, XMM8, FSxBX
1193EMIT_INSTR_PLUS_ICEBP_C64 vcomisd, XMM8, XMM8
1194
1195;
1196;; [v]ucomisd
1197;
1198EMIT_INSTR_PLUS_ICEBP ucomisd, XMM1, XMM2
1199EMIT_INSTR_PLUS_ICEBP ucomisd, XMM1, FSxBX
1200EMIT_INSTR_PLUS_ICEBP ucomisd, XMM1, XMM1
1201EMIT_INSTR_PLUS_ICEBP_C64 ucomisd, XMM8, XMM9
1202EMIT_INSTR_PLUS_ICEBP_C64 ucomisd, XMM8, FSxBX
1203EMIT_INSTR_PLUS_ICEBP_C64 ucomisd, XMM8, XMM8
1204
1205EMIT_INSTR_PLUS_ICEBP vucomisd, XMM1, XMM2
1206EMIT_INSTR_PLUS_ICEBP vucomisd, XMM1, FSxBX
1207EMIT_INSTR_PLUS_ICEBP vucomisd, XMM1, XMM1
1208EMIT_INSTR_PLUS_ICEBP_C64 vucomisd, XMM8, XMM9
1209EMIT_INSTR_PLUS_ICEBP_C64 vucomisd, XMM8, FSxBX
1210EMIT_INSTR_PLUS_ICEBP_C64 vucomisd, XMM8, XMM8
1211
1212;
1213;; [v]cmpps
1214;
1215EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 000h
1216EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 001h
1217EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 002h
1218EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 003h
1219EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 004h
1220EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 005h
1221EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 006h
1222EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 007h
1223EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 008h ;; reserved
1224EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 011h ;; reserved
1225EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 022h ;; reserved
1226EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 043h ;; reserved
1227EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM2, 084h ;; reserved
1228EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM1, 000h ;; same-register
1229EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, XMM1, 006h ;; same-register
1230EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, FSxBX, 001h
1231EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, FSxBX, 004h
1232EMIT_INSTR_PLUS_ICEBP cmpps, XMM1, FSxBX, 007h
1233EMIT_INSTR_PLUS_ICEBP_C64 cmpps, XMM8, XMM9, 002h
1234EMIT_INSTR_PLUS_ICEBP_C64 cmpps, XMM8, XMM8, 005h ;; same-register
1235EMIT_INSTR_PLUS_ICEBP_C64 cmpps, XMM8, FSxBX, 003h
1236
1237EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 000h
1238EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 001h
1239EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 002h
1240EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 003h
1241EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 004h
1242EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 005h
1243EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 006h
1244EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 007h
1245EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 008h
1246EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 009h
1247EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00ah
1248EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00bh
1249EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00ch
1250EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00dh
1251EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00eh
1252EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 00fh
1253EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 010h
1254EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 011h
1255EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 012h
1256EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 013h
1257EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 014h
1258EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 015h
1259EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 016h
1260EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 017h
1261EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 018h
1262EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 019h
1263EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01ah
1264EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01bh
1265EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01ch
1266EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01dh
1267EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01eh
1268EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 01fh
1269EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 022h ;; reserved
1270EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM3, 044h ;; reserved
1271EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM1, XMM1, 005h ;; same-register
1272EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM1, XMM2, 00ah ;; same-register
1273EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM1, FSxBX, 00bh ;; same-register
1274EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM1, 00ch ;; same-register
1275EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, XMM2, 00eh ;; same-register
1276EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, FSxBX, 010h
1277EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, FSxBX, 011h
1278EMIT_INSTR_PLUS_ICEBP vcmpps, XMM1, XMM2, FSxBX, 013h
1279EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, XMM10, 016h
1280EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, XMM10, 017h
1281EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, XMM10, 019h
1282EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, XMM9, 01ah ;; same-register
1283EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, XMM10, 0ddh ;; reserved
1284EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM9, FSxBX, 01dh
1285EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, XMM8, XMM8, FSxBX, 01fh ;; same-register
1286
1287EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 000h
1288EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 001h
1289EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 002h
1290EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 003h
1291EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 004h
1292EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 005h
1293EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 006h
1294EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 007h
1295EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 008h
1296EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 009h
1297EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00ah
1298EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00bh
1299EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00ch
1300EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00dh
1301EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00eh
1302EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 00fh
1303EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 010h
1304EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 011h
1305EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 012h
1306EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 013h
1307EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 014h
1308EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 015h
1309EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 016h
1310EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 017h
1311EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 018h
1312EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 019h
1313EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01ah
1314EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01bh
1315EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01ch
1316EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01dh
1317EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01eh
1318EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 01fh
1319EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 022h ;; reserved
1320EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM3, 044h ;; reserved
1321EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM1, YMM1, 005h ;; same-register
1322EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM1, YMM2, 00ah ;; same-register
1323EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM1, FSxBX, 00bh ;; same-register
1324EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM1, 00ch ;; same-register
1325EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, YMM2, 00eh ;; same-register
1326EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, FSxBX, 010h
1327EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, FSxBX, 011h
1328EMIT_INSTR_PLUS_ICEBP vcmpps, YMM1, YMM2, FSxBX, 013h
1329EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, YMM10, 016h
1330EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, YMM10, 017h
1331EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, YMM10, 019h
1332EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, YMM9, 01ah ;; same-register
1333EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, YMM10, 0ddh ;; reserved
1334EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM9, FSxBX, 01dh
1335EMIT_INSTR_PLUS_ICEBP_C64 vcmpps, YMM8, YMM8, FSxBX, 01fh ;; same-register
1336
1337;
1338;; [v]cmppd
1339;
1340EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 000h
1341EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 001h
1342EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 002h
1343EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 003h
1344EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 004h
1345EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 005h
1346EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 006h
1347EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 007h
1348EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 008h ;; reserved
1349EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 011h ;; reserved
1350EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 022h ;; reserved
1351EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 043h ;; reserved
1352EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM2, 084h ;; reserved
1353EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM1, 000h ;; same-register
1354EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, XMM1, 006h ;; same-register
1355EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 001h
1356EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 004h
1357EMIT_INSTR_PLUS_ICEBP cmppd, XMM1, FSxBX, 007h
1358EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, XMM9, 002h
1359EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, XMM8, 005h ;; same-register
1360EMIT_INSTR_PLUS_ICEBP_C64 cmppd, XMM8, FSxBX, 003h
1361
1362EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 000h
1363EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 001h
1364EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 002h
1365EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 003h
1366EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 004h
1367EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 005h
1368EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 006h
1369EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 007h
1370EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 008h
1371EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 009h
1372EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00ah
1373EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00bh
1374EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00ch
1375EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00dh
1376EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00eh
1377EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 00fh
1378EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 010h
1379EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 011h
1380EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 012h
1381EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 013h
1382EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 014h
1383EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 015h
1384EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 016h
1385EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 017h
1386EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 018h
1387EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 019h
1388EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01ah
1389EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01bh
1390EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01ch
1391EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01dh
1392EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01eh
1393EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 01fh
1394EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 022h ;; reserved
1395EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM3, 044h ;; reserved
1396EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, XMM1, 005h ;; same-register
1397EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, XMM2, 00ah ;; same-register
1398EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM1, FSxBX, 00bh ;; same-register
1399EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM1, 00ch ;; same-register
1400EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, XMM2, 00eh ;; same-register
1401EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 010h
1402EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 011h
1403EMIT_INSTR_PLUS_ICEBP vcmppd, XMM1, XMM2, FSxBX, 013h
1404EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 016h
1405EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 017h
1406EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 019h
1407EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM9, 01ah ;; same-register
1408EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, XMM10, 0ddh ;; reserved
1409EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM9, FSxBX, 01dh
1410EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, XMM8, XMM8, FSxBX, 01fh ;; same-register
1411
1412EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 000h
1413EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 001h
1414EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 002h
1415EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 003h
1416EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 004h
1417EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 005h
1418EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 006h
1419EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 007h
1420EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 008h
1421EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 009h
1422EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00ah
1423EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00bh
1424EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00ch
1425EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00dh
1426EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00eh
1427EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 00fh
1428EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 010h
1429EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 011h
1430EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 012h
1431EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 013h
1432EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 014h
1433EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 015h
1434EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 016h
1435EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 017h
1436EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 018h
1437EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 019h
1438EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01ah
1439EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01bh
1440EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01ch
1441EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01dh
1442EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01eh
1443EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 01fh
1444EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 022h ;; reserved
1445EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM3, 044h ;; reserved
1446EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, YMM1, 005h ;; same-register
1447EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, YMM2, 00ah ;; same-register
1448EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM1, FSxBX, 00bh ;; same-register
1449EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM1, 00ch ;; same-register
1450EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, YMM2, 00eh ;; same-register
1451EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 010h
1452EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 011h
1453EMIT_INSTR_PLUS_ICEBP vcmppd, YMM1, YMM2, FSxBX, 013h
1454EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 016h
1455EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 017h
1456EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 019h
1457EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM9, 01ah ;; same-register
1458EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, YMM10, 0ddh ;; reserved
1459EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM9, FSxBX, 01dh
1460EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM8, FSxBX, 01fh ;; same-register
1461
1462;
1463;; cvtpi2ps
1464;
1465; SSE-128, fp32 <- int32 (packed:2; from MMX register)
1466EMIT_INSTR_PLUS_ICEBP cvtpi2ps, XMM1, MM1
1467EMIT_INSTR_PLUS_ICEBP cvtpi2ps, XMM1, FSxBX
1468EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2ps, XMM8, MM1
1469EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2ps, XMM8, FSxBX
1470
1471;
1472;; cvtps2pi
1473;
1474; SSE-128, int32 <- fp32 (packed:2; to MMX register)
1475EMIT_INSTR_PLUS_ICEBP cvtps2pi, MM1, XMM1
1476EMIT_INSTR_PLUS_ICEBP cvtps2pi, MM1, FSxBX
1477EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pi, MM1, XMM8
1478
1479;
1480;; cvttps2pi
1481;
1482; SSE-128, int32 <- fp32 (packed:2; truncated; to MMX register)
1483EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, XMM1
1484EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, FSxBX
1485EMIT_INSTR_PLUS_ICEBP_C64 cvttps2pi, MM1, XMM8
1486
1487;
1488;; [v]cvtsi2ss
1489;
1490; SSE-128, fp32 <- int32 (single)
1491EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, EAX
1492EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, FSxBX_D
1493EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8D
1494EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_D
1495; SSE-128, fp32 <- int64 (single)
1496EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, RAX
1497EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, FSxBX_Q
1498EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8
1499EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_Q
1500; AVX-128, fp32 <- int32 (single)
1501EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, EAX
1502EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_D
1503EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8D
1504EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_D
1505; AVX-128, fp32 <- int64 (single)
1506EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, RAX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1507EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_Q ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1508EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8
1509EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_Q
1510; AVX-128, fp32 <- int32, same-reg (single)
1511EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, EAX
1512EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_D
1513EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8D
1514EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_D
1515; AVX-128, fp32 <- int64, same-reg (single)
1516EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, RAX ;; @todo this assembles in 16/32 mode, but should it...?
1517EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_Q ;; @todo this assembles in 16/32 mode, but should it...?
1518EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8
1519EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_Q
1520; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1521; @todo same-reg fp32 <- int32 (SDM says W1 ignored in 32-bit modes) (see above)
1522
1523;
1524;; [v]cvtss2si
1525;
1526; SSE-128, int32 <- fp32
1527EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, XMM1
1528EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, FSxBX
1529EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, XMM8
1530EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, FSxBX
1531; SSE-128, int64 <- fp32
1532EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, XMM1
1533EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, FSxBX
1534EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, XMM8
1535EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, FSxBX
1536; AVX-128, int32 <- fp32
1537EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, XMM1
1538EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, FSxBX
1539EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, XMM8
1540EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, FSxBX
1541; AVX-128, int64 <- fp32
1542EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, XMM1
1543EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, FSxBX
1544EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, XMM8
1545EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, FSxBX
1546; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1547; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1548
1549;
1550;; [v]cvttss2si
1551;
1552; SSE-128, int32 <- fp32 (single; truncated)
1553EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, XMM1
1554EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, FSxBX
1555EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, XMM8
1556EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, FSxBX
1557; SSE-128, int64 <- fp32 (single; truncated)
1558EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, XMM1
1559EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, FSxBX
1560EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, XMM8
1561EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, FSxBX
1562; AVX-128, int32 <- fp32 (single; truncated)
1563EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, XMM1
1564EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, FSxBX
1565EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, XMM8
1566EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, FSxBX
1567; AVX-128, int64 <- fp32 (single; truncated)
1568EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, XMM1
1569EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, FSxBX
1570EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, XMM8
1571EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, FSxBX
1572; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1573; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1574
1575;
1576;; cvtpi2pd
1577;
1578; SSE-128, fp64 <- int32 (packed:2; from MMX register)
1579EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, MM1
1580EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, FSxBX
1581EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, MM1
1582EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, FSxBX
1583; note: transition from x87 FPU to MMX; takes FPU exceptions (MM forms only)
1584
1585;
1586;; cvtpd2pi
1587;
1588; SSE-128, int32 <- fp64 (packed:2; to MMX register)
1589EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, XMM1
1590EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, FSxBX
1591EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2pi, MM1, XMM8
1592; note: transition from x87 FPU to MMX; takes FPU exceptions
1593
1594;
1595;; cvttpd2pi
1596;
1597; SSE-128, int32 <- fp64 (packed:2; truncated; to MMX register)
1598EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, XMM1
1599EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, FSxBX
1600EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2pi, MM1, XMM8
1601; note: transition from x87 FPU to MMX; takes FPU exceptions
1602
1603;
1604;; [v]cvtsi2sd
1605;
1606; SSE-128, fp64 <- int32 (single)
1607EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, EAX
1608EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, FSxBX_D
1609EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8D
1610EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_D
1611; SSE-128, fp64 <- int64 (single)
1612EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, RAX
1613EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, FSxBX_Q
1614EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8
1615EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_Q
1616; AVX-128, fp64 <- int32 (single)
1617EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, EAX
1618EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_D
1619EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, R8D
1620EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_D
1621; AVX-128, fp64 <- int64 (single)
1622EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, RAX
1623EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_Q
1624EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, R8
1625EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_Q
1626; AVX-128, fp64 <- int32, same-reg (single)
1627EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, EAX
1628EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_D
1629EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, R8D
1630EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_D
1631; AVX-128, fp64 <- int64, same-reg (single)
1632EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, RAX
1633EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_Q
1634EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, R8
1635EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_Q
1636; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1637; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1638
1639;
1640;; [v]cvtsd2si
1641;
1642; SSE-128, int32 <- fp64 (single)
1643EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, XMM1
1644EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, FSxBX
1645EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, XMM8
1646EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, FSxBX
1647; SSE-128, int64 <- fp64 (single)
1648EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, XMM1
1649EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, FSxBX
1650EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, XMM8
1651EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, FSxBX
1652; AVX-128, int32 <- fp64 (single)
1653EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, XMM1
1654EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, FSxBX
1655EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, XMM8
1656EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, FSxBX
1657; AVX-128, int64 <- fp64 (single)
1658EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, XMM1 ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1659EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, FSxBX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1660EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, XMM8
1661EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, FSxBX
1662; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1663; @todo same-reg fp32 <- int32 (SDM says W1 ignored in 32-bit modes) (see above)
1664
1665;
1666;; [v]cvttsd2si
1667;
1668; SSE-128, int32 <- fp64 (single; truncated)
1669EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, XMM1
1670EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, FSxBX
1671EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, XMM8
1672EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, FSxBX
1673; SSE-128, int64 <- fp64 (single; truncated)
1674EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, XMM1
1675EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, FSxBX
1676EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, XMM8
1677EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, FSxBX
1678; AVX-128, int32 <- fp64 (single; truncated)
1679EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, XMM1
1680EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, FSxBX
1681EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, XMM8
1682EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, FSxBX
1683; AVX-128, int64 <- fp64 (single; truncated)
1684EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, XMM1
1685EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, FSxBX
1686EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, XMM8
1687EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, FSxBX
1688; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1689; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1690
1691;
1692;; [v]cvtdq2ps
1693;
1694; SSE-128, fp32 <- int32 (packed:4)
1695EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM2
1696EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, FSxBX
1697EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM9
1698EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, FSxBX
1699; AVX-128, fp32 <- int32 (packed:4)
1700EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM2
1701EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, FSxBX
1702EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM9
1703EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, FSxBX
1704; AVX-256, fp32 <- int32 (packed:8)
1705EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM2
1706EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, FSxBX
1707EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM9
1708EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, FSxBX
1709; SSE-128, fp32 <- int32, same-reg (packed:4)
1710EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM1
1711EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM8
1712; AVX-128, fp32 <- int32, same-reg (packed:4)
1713EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM1
1714EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM8
1715; AVX-256, fp32 <- int32, same-reg (packed:8)
1716EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM1
1717EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM8
1718
1719;
1720;; [v]cvtps2dq
1721;
1722; SSE-128, int32 <- fp32 (packed:4)
1723EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM2
1724EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, FSxBX
1725EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM9
1726EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, FSxBX
1727; AVX-128, int32 <- fp32 (packed:4)
1728EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM2
1729EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, FSxBX
1730EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM9
1731EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, FSxBX
1732; AVX-256, int32 <- fp32 (packed:8)
1733EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM2
1734EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, FSxBX
1735EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM9
1736EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, FSxBX
1737; SSE-128, int32 <- fp32, same-reg (packed:4)
1738EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM1
1739EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM8
1740; AVX-128, int32 <- fp32, same-reg (packed:4)
1741EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM1
1742EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM8
1743; AVX-256, int32 <- fp32, same-reg (packed:8)
1744EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM1
1745EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM8
1746
1747;
1748;; [v]cvttps2dq
1749;
1750; SSE-128, int32 <- fp32 (packed:4; truncated)
1751EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM2
1752EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, FSxBX
1753EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM9
1754EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, FSxBX
1755; AVX-128, int32 <- fp32 (packed:4; truncated)
1756EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM2
1757EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, FSxBX
1758EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM9
1759EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, FSxBX
1760; AVX-256, int32 <- fp32 (packed:8; truncated)
1761EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM2
1762EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, FSxBX
1763EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM9
1764EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, FSxBX
1765; AVX-128, int32 <- fp32, same-reg (packed:4; truncated)
1766EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM1
1767EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM8
1768; AVX-128, int32 <- fp32, same-reg (packed:4; truncated)
1769EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM1
1770EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM8
1771; AVX-256, int32 <- fp32, same-reg (packed:8; truncated)
1772EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM1
1773EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM8
1774
1775;
1776;; [v]cvtdq2pd
1777;
1778; SSE-128, fp64 <- int32 (packed:2)
1779EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM2
1780EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, FSxBX
1781EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM9
1782EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, FSxBX
1783; AVX-128, fp64 <- int32 (packed:2)
1784EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM2
1785EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, FSxBX
1786EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM9
1787EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, FSxBX
1788; AVX-256, fp64 <- int32 (packed:4)
1789EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM2
1790EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, FSxBX
1791EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM9
1792EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, FSxBX
1793; SSE-128, fp64 <- int32, same-reg (packed:2)
1794EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM1
1795EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM8
1796; AVX-128, fp64 <- int32, same-reg (packed:2)
1797EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM1
1798EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM8
1799; AVX-256, fp64 <- int32, same-reg (packed:4)
1800EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM1
1801EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM8
1802
1803;
1804;; [v]cvtpd2dq
1805;
1806; SSE-128, int32 <- fp64 (packed:2)
1807EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM2
1808EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, FSxBX
1809EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM9
1810EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, FSxBX
1811; AVX-128, int32 <- fp64 (packed:2)
1812EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM2
1813EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, FSxBX
1814EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM9
1815EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, FSxBX
1816; AVX-256, int32 <- fp64 (packed:4)
1817EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM2
1818EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, FSxBX_Y
1819EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM9
1820EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, FSxBX_Y
1821; SSE-128, int32 <- fp64, same-reg (packed:2)
1822EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM1
1823EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM8
1824; AVX-128, int32 <- fp64, same-reg (packed:2)
1825EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM1
1826EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM8
1827; AVX-256, int32 <- fp64, same-reg (packed:4)
1828EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM1
1829EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM8
1830
1831;
1832;; [v]cvttpd2dq
1833;
1834; SSE-128, int32 <- fp64 (packed:2; truncated)
1835EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM2
1836EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, FSxBX
1837EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM9
1838EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, FSxBX
1839; AVX-128, int32 <- fp64 (packed:2; truncated)
1840EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM2
1841EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX
1842EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM9
1843EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX
1844; AVX-256, int32 <- fp64 (packed:4; truncated)
1845EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM2
1846EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX_Y
1847EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM9
1848EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX_Y
1849; AVX-128, int32 <- fp64, same-reg (packed:2; truncated)
1850EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM1
1851EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM8
1852; AVX-128, int32 <- fp64, same-reg (packed:2; truncated)
1853EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM1
1854EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM8
1855; AVX-256, int32 <- fp64, same-reg (packed:4; truncated)
1856EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM1
1857EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM8
1858
1859;
1860;; [v]cvtpd2ps
1861;
1862; SSE-128, fp32 <- fp64 (packed:2)
1863EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM2
1864EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, FSxBX
1865EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM9
1866EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, FSxBX
1867; AVX-128, fp32 <- fp64 (packed:2)
1868EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM2
1869EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_O
1870EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM9
1871EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_O
1872; AVX-256, fp32 <- fp64 (packed:4)
1873EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM2
1874EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_Y
1875EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM9
1876EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_Y
1877; SSE-128, fp32 <- fp64, same-reg (packed:2)
1878EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM1
1879EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM8
1880; AVX-128, fp32 <- fp64, same-reg (packed:2)
1881EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM1
1882EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM8
1883; AVX-256, fp32 <- fp64, same-reg (packed:4)
1884EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM1
1885EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM8
1886
1887;
1888;; [v]cvtps2pd
1889;
1890; SSE-128, fp64 <- fp32 (packed:2)
1891EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM2
1892EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, FSxBX
1893EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM9
1894EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, FSxBX
1895; AVX-128, fp64 <- fp32 (packed:2)
1896EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM2
1897EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, FSxBX
1898EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM9
1899EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, FSxBX
1900; AVX-256, fp64 <- fp32 (packed:4)
1901EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM2
1902EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, FSxBX
1903EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM9
1904EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, FSxBX
1905; SSE-128, fp64 <- fp32, same-reg (packed:2)
1906EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM1
1907EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM8
1908; AVX-128, fp64 <- fp32, same-reg (packed:2)
1909EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM1
1910EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM8
1911; AVX-256, fp64 <- fp32, same-reg (packed:4)
1912EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM1
1913EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM8
1914
1915;
1916;; [v]cvtsd2ss
1917;
1918; SSE-128, fp32 <- fp64 (single)
1919EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM2
1920EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, FSxBX
1921EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM9
1922EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, FSxBX
1923; AVX-128, fp32 <- fp64 (single)
1924EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, XMM3
1925EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, FSxBX
1926EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, XMM10
1927EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, FSxBX
1928; SSE-128, fp32 <- fp64, same-reg (single)
1929EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM1
1930EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM8
1931; AVX-128, fp32 <- fp64, same-reg (single)
1932EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, XMM1
1933EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, XMM2
1934EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, XMM1
1935EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, XMM2
1936EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, FSxBX
1937EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, XMM8
1938EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, XMM9
1939EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, XMM8
1940EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, XMM9
1941EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, FSxBX
1942; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1943
1944;
1945;; [v]cvtss2sd
1946;
1947; SSE-128, fp64 <- fp32 (single)
1948EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM2
1949EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, FSxBX
1950EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM9
1951EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, FSxBX
1952; AVX-128, fp64 <- fp32 (single)
1953EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, XMM3
1954EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, FSxBX
1955EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, XMM10
1956EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, FSxBX
1957; SSE-128, fp64 <- fp32, same-reg (single)
1958EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM1
1959EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM8
1960; AVX-128, fp64 <- fp32, same-reg (single)
1961EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, XMM1
1962EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, XMM2
1963EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, XMM1
1964EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, XMM2
1965EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, FSxBX
1966EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, XMM8
1967EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, XMM9
1968EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, XMM8
1969EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, XMM9
1970EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, FSxBX
1971; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1972
1973 %endif ; BS3_CPU_INSTR_4
1974
1975%endif ; BS3_INSTANTIATING_CMN
1976
1977%include "bs3kit-template-footer.mac" ; reset environment
Note: See TracBrowser for help on using the repository browser.

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