VirtualBox

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

Last change on this file since 106718 was 106676, checked in by vboxsync, 3 months ago

ValidationKit/bootsectors: SIMD FP testcases: emit instruction test functions for 22 'cvt' family instructions; bugref:10658; jiraref:VBP-1206

  • add instruction test variants for 22 'cvt' family instructions
  • generates 594 different functions: lots of test code to be written!
  • document FPU/MMX transitions the test code will need to implement
  • document encoding variants we ought to test if we can figure out how
  • allow forcing specific 'FSxBX' data sizes needed in some AVX cases
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 52.2 KB
Line 
1; $Id: bs3-cpu-instr-4-template.mac 106676 2024-10-25 06:21:56Z vboxsync $
2;; @file
3; BS3Kit - bs3-cpu-instr-4 - 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;
178;; [v]addps
179;
180EMIT_INSTR_PLUS_ICEBP addps, XMM1, XMM2
181EMIT_INSTR_PLUS_ICEBP addps, XMM1, FSxBX
182EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, XMM9
183EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, FSxBX
184
185EMIT_INSTR_PLUS_ICEBP vaddps, XMM1, XMM2, XMM3
186EMIT_INSTR_PLUS_ICEBP vaddps, XMM1, XMM2, FSxBX
187EMIT_INSTR_PLUS_ICEBP_C64 vaddps, XMM8, XMM9, XMM10
188EMIT_INSTR_PLUS_ICEBP_C64 vaddps, XMM8, XMM9, FSxBX
189
190EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM2, YMM3
191EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM2, FSxBX
192EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM9, YMM10
193EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM9, FSxBX
194
195EMIT_INSTR_PLUS_ICEBP addps, XMM1, XMM1
196EMIT_INSTR_PLUS_ICEBP_C64 addps, XMM8, XMM8
197EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, YMM1
198EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, YMM2
199EMIT_INSTR_PLUS_ICEBP_C64 vaddps, YMM8, YMM8, YMM8
200EMIT_INSTR_PLUS_ICEBP vaddps, YMM1, YMM1, FSxBX
201
202;
203;; [v]addpd
204;
205EMIT_INSTR_PLUS_ICEBP addpd, XMM1, XMM2
206EMIT_INSTR_PLUS_ICEBP addpd, XMM1, FSxBX
207EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, XMM9
208EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, FSxBX
209
210EMIT_INSTR_PLUS_ICEBP vaddpd, XMM1, XMM2, XMM3
211EMIT_INSTR_PLUS_ICEBP vaddpd, XMM1, XMM2, FSxBX
212EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, XMM8, XMM9, XMM10
213EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, XMM8, XMM9, FSxBX
214
215EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM2, YMM3
216EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM2, FSxBX
217EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM9, YMM10
218EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM9, FSxBX
219
220EMIT_INSTR_PLUS_ICEBP addpd, XMM1, XMM1
221EMIT_INSTR_PLUS_ICEBP_C64 addpd, XMM8, XMM8
222EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, YMM1
223EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, YMM2
224EMIT_INSTR_PLUS_ICEBP_C64 vaddpd, YMM8, YMM8, YMM8
225EMIT_INSTR_PLUS_ICEBP vaddpd, YMM1, YMM1, FSxBX
226
227;
228;; [v]addss
229;
230EMIT_INSTR_PLUS_ICEBP addss, XMM1, XMM2
231EMIT_INSTR_PLUS_ICEBP addss, XMM1, FSxBX
232EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, XMM9
233EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, FSxBX
234
235EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM2, XMM3
236EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM2, FSxBX
237EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM9, XMM10
238EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM9, FSxBX
239
240EMIT_INSTR_PLUS_ICEBP addss, XMM1, XMM1
241EMIT_INSTR_PLUS_ICEBP_C64 addss, XMM8, XMM8
242EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, XMM1
243EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, XMM2
244EMIT_INSTR_PLUS_ICEBP_C64 vaddss, XMM8, XMM8, XMM8
245EMIT_INSTR_PLUS_ICEBP vaddss, XMM1, XMM1, FSxBX
246
247;
248;; [v]addsd
249;
250EMIT_INSTR_PLUS_ICEBP addsd, XMM1, XMM2
251EMIT_INSTR_PLUS_ICEBP addsd, XMM1, FSxBX
252EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, XMM9
253EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, FSxBX
254
255EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM2, XMM3
256EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM2, FSxBX
257EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM9, XMM10
258EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM9, FSxBX
259
260EMIT_INSTR_PLUS_ICEBP addsd, XMM1, XMM1
261EMIT_INSTR_PLUS_ICEBP_C64 addsd, XMM8, XMM8
262EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, XMM1
263EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, XMM2
264EMIT_INSTR_PLUS_ICEBP_C64 vaddsd, XMM8, XMM8, XMM8
265EMIT_INSTR_PLUS_ICEBP vaddsd, XMM1, XMM1, FSxBX
266
267;
268;; [v]haddps
269;
270EMIT_INSTR_PLUS_ICEBP haddps, XMM1, XMM2
271EMIT_INSTR_PLUS_ICEBP haddps, XMM1, FSxBX
272EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, XMM9
273EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, FSxBX
274
275EMIT_INSTR_PLUS_ICEBP vhaddps, XMM1, XMM2, XMM3
276EMIT_INSTR_PLUS_ICEBP vhaddps, XMM1, XMM2, FSxBX
277EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, XMM8, XMM9, XMM10
278EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, XMM8, XMM9, FSxBX
279
280EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM2, YMM3
281EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM2, FSxBX
282EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM9, YMM10
283EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM9, FSxBX
284
285EMIT_INSTR_PLUS_ICEBP haddps, XMM1, XMM1
286EMIT_INSTR_PLUS_ICEBP_C64 haddps, XMM8, XMM8
287EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM1
288EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, YMM2
289EMIT_INSTR_PLUS_ICEBP_C64 vhaddps, YMM8, YMM8, YMM8
290EMIT_INSTR_PLUS_ICEBP vhaddps, YMM1, YMM1, FSxBX
291
292;
293;; [v]haddpd
294;
295EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, XMM2
296EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, FSxBX
297EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, XMM9
298EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, FSxBX
299
300EMIT_INSTR_PLUS_ICEBP vhaddpd, XMM1, XMM2, XMM3
301EMIT_INSTR_PLUS_ICEBP vhaddpd, XMM1, XMM2, FSxBX
302EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, XMM8, XMM9, XMM10
303EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, XMM8, XMM9, FSxBX
304
305EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM2, YMM3
306EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM2, FSxBX
307EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, YMM10
308EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM9, FSxBX
309
310EMIT_INSTR_PLUS_ICEBP haddpd, XMM1, XMM1
311EMIT_INSTR_PLUS_ICEBP_C64 haddpd, XMM8, XMM8
312EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM1
313EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, YMM2
314EMIT_INSTR_PLUS_ICEBP_C64 vhaddpd, YMM8, YMM8, YMM8
315EMIT_INSTR_PLUS_ICEBP vhaddpd, YMM1, YMM1, FSxBX
316
317;
318;; [v]subps
319;
320EMIT_INSTR_PLUS_ICEBP subps, XMM1, XMM2
321EMIT_INSTR_PLUS_ICEBP subps, XMM1, FSxBX
322EMIT_INSTR_PLUS_ICEBP_C64 subps, XMM8, XMM9
323EMIT_INSTR_PLUS_ICEBP_C64 subps, XMM8, FSxBX
324
325EMIT_INSTR_PLUS_ICEBP vsubps, XMM1, XMM2, XMM3
326EMIT_INSTR_PLUS_ICEBP vsubps, XMM1, XMM2, FSxBX
327EMIT_INSTR_PLUS_ICEBP_C64 vsubps, XMM8, XMM9, XMM10
328EMIT_INSTR_PLUS_ICEBP_C64 vsubps, XMM8, XMM9, FSxBX
329
330EMIT_INSTR_PLUS_ICEBP vsubps, YMM1, YMM2, YMM3
331EMIT_INSTR_PLUS_ICEBP vsubps, YMM1, YMM2, FSxBX
332EMIT_INSTR_PLUS_ICEBP_C64 vsubps, YMM8, YMM9, YMM10
333EMIT_INSTR_PLUS_ICEBP_C64 vsubps, YMM8, YMM9, FSxBX
334
335;
336;; [v]subpd
337;
338EMIT_INSTR_PLUS_ICEBP subpd, XMM1, XMM2
339EMIT_INSTR_PLUS_ICEBP subpd, XMM1, FSxBX
340EMIT_INSTR_PLUS_ICEBP_C64 subpd, XMM8, XMM9
341EMIT_INSTR_PLUS_ICEBP_C64 subpd, XMM8, FSxBX
342
343EMIT_INSTR_PLUS_ICEBP vsubpd, XMM1, XMM2, XMM3
344EMIT_INSTR_PLUS_ICEBP vsubpd, XMM1, XMM2, FSxBX
345EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, XMM8, XMM9, XMM10
346EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, XMM8, XMM9, FSxBX
347
348EMIT_INSTR_PLUS_ICEBP vsubpd, YMM1, YMM2, YMM3
349EMIT_INSTR_PLUS_ICEBP vsubpd, YMM1, YMM2, FSxBX
350EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, YMM8, YMM9, YMM10
351EMIT_INSTR_PLUS_ICEBP_C64 vsubpd, YMM8, YMM9, FSxBX
352
353;
354;; [v]subss
355;
356EMIT_INSTR_PLUS_ICEBP subss, XMM1, XMM2
357EMIT_INSTR_PLUS_ICEBP subss, XMM1, FSxBX
358EMIT_INSTR_PLUS_ICEBP_C64 subss, XMM8, XMM9
359EMIT_INSTR_PLUS_ICEBP_C64 subss, XMM8, FSxBX
360
361EMIT_INSTR_PLUS_ICEBP vsubss, XMM1, XMM2, XMM3
362EMIT_INSTR_PLUS_ICEBP vsubss, XMM1, XMM2, FSxBX
363EMIT_INSTR_PLUS_ICEBP_C64 vsubss, XMM8, XMM9, XMM10
364EMIT_INSTR_PLUS_ICEBP_C64 vsubss, XMM8, XMM9, FSxBX
365
366;
367;; [v]subsd
368;
369EMIT_INSTR_PLUS_ICEBP subsd, XMM1, XMM2
370EMIT_INSTR_PLUS_ICEBP subsd, XMM1, FSxBX
371EMIT_INSTR_PLUS_ICEBP_C64 subsd, XMM8, XMM9
372EMIT_INSTR_PLUS_ICEBP_C64 subsd, XMM8, FSxBX
373
374EMIT_INSTR_PLUS_ICEBP vsubsd, XMM1, XMM2, XMM3
375EMIT_INSTR_PLUS_ICEBP vsubsd, XMM1, XMM2, FSxBX
376EMIT_INSTR_PLUS_ICEBP_C64 vsubsd, XMM8, XMM9, XMM10
377EMIT_INSTR_PLUS_ICEBP_C64 vsubsd, XMM8, XMM9, FSxBX
378
379;
380;; [v]hsubps
381;
382EMIT_INSTR_PLUS_ICEBP hsubps, XMM1, XMM2
383EMIT_INSTR_PLUS_ICEBP hsubps, XMM1, FSxBX
384EMIT_INSTR_PLUS_ICEBP_C64 hsubps, XMM8, XMM9
385EMIT_INSTR_PLUS_ICEBP_C64 hsubps, XMM8, FSxBX
386
387EMIT_INSTR_PLUS_ICEBP vhsubps, XMM1, XMM2, XMM3
388EMIT_INSTR_PLUS_ICEBP vhsubps, XMM1, XMM2, FSxBX
389EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, XMM8, XMM9, XMM10
390EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, XMM8, XMM9, FSxBX
391
392EMIT_INSTR_PLUS_ICEBP vhsubps, YMM1, YMM2, YMM3
393EMIT_INSTR_PLUS_ICEBP vhsubps, YMM1, YMM2, FSxBX
394EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, YMM8, YMM9, YMM10
395EMIT_INSTR_PLUS_ICEBP_C64 vhsubps, YMM8, YMM9, FSxBX
396
397;
398;; [v]hsubpd
399;
400EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, XMM2
401EMIT_INSTR_PLUS_ICEBP hsubpd, XMM1, FSxBX
402EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, XMM9
403EMIT_INSTR_PLUS_ICEBP_C64 hsubpd, XMM8, FSxBX
404
405EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, XMM3
406EMIT_INSTR_PLUS_ICEBP vhsubpd, XMM1, XMM2, FSxBX
407EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, XMM10
408EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, XMM8, XMM9, FSxBX
409
410EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, YMM3
411EMIT_INSTR_PLUS_ICEBP vhsubpd, YMM1, YMM2, FSxBX
412EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, YMM10
413EMIT_INSTR_PLUS_ICEBP_C64 vhsubpd, YMM8, YMM9, FSxBX
414
415;
416;; [v]mulps
417;
418EMIT_INSTR_PLUS_ICEBP mulps, XMM1, XMM2
419EMIT_INSTR_PLUS_ICEBP mulps, XMM1, FSxBX
420EMIT_INSTR_PLUS_ICEBP_C64 mulps, XMM8, XMM9
421EMIT_INSTR_PLUS_ICEBP_C64 mulps, XMM8, FSxBX
422
423EMIT_INSTR_PLUS_ICEBP vmulps, XMM1, XMM2, XMM3
424EMIT_INSTR_PLUS_ICEBP vmulps, XMM1, XMM2, FSxBX
425EMIT_INSTR_PLUS_ICEBP_C64 vmulps, XMM8, XMM9, XMM10
426EMIT_INSTR_PLUS_ICEBP_C64 vmulps, XMM8, XMM9, FSxBX
427
428EMIT_INSTR_PLUS_ICEBP vmulps, YMM1, YMM2, YMM3
429EMIT_INSTR_PLUS_ICEBP vmulps, YMM1, YMM2, FSxBX
430EMIT_INSTR_PLUS_ICEBP_C64 vmulps, YMM8, YMM9, YMM10
431EMIT_INSTR_PLUS_ICEBP_C64 vmulps, YMM8, YMM9, FSxBX
432
433;
434;; [v]mulpd
435;
436EMIT_INSTR_PLUS_ICEBP mulpd, XMM1, XMM2
437EMIT_INSTR_PLUS_ICEBP mulpd, XMM1, FSxBX
438EMIT_INSTR_PLUS_ICEBP_C64 mulpd, XMM8, XMM9
439EMIT_INSTR_PLUS_ICEBP_C64 mulpd, XMM8, FSxBX
440
441EMIT_INSTR_PLUS_ICEBP vmulpd, XMM1, XMM2, XMM3
442EMIT_INSTR_PLUS_ICEBP vmulpd, XMM1, XMM2, FSxBX
443EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, XMM8, XMM9, XMM10
444EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, XMM8, XMM9, FSxBX
445
446EMIT_INSTR_PLUS_ICEBP vmulpd, YMM1, YMM2, YMM3
447EMIT_INSTR_PLUS_ICEBP vmulpd, YMM1, YMM2, FSxBX
448EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, YMM8, YMM9, YMM10
449EMIT_INSTR_PLUS_ICEBP_C64 vmulpd, YMM8, YMM9, FSxBX
450
451;
452;; [v]mulss
453;
454EMIT_INSTR_PLUS_ICEBP mulss, XMM1, XMM2
455EMIT_INSTR_PLUS_ICEBP mulss, XMM1, FSxBX
456EMIT_INSTR_PLUS_ICEBP_C64 mulss, XMM8, XMM9
457EMIT_INSTR_PLUS_ICEBP_C64 mulss, XMM8, FSxBX
458
459EMIT_INSTR_PLUS_ICEBP vmulss, XMM1, XMM2, XMM3
460EMIT_INSTR_PLUS_ICEBP vmulss, XMM1, XMM2, FSxBX
461EMIT_INSTR_PLUS_ICEBP_C64 vmulss, XMM8, XMM9, XMM10
462EMIT_INSTR_PLUS_ICEBP_C64 vmulss, XMM8, XMM9, FSxBX
463
464;
465;; [v]mulsd
466;
467EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, XMM2
468EMIT_INSTR_PLUS_ICEBP mulsd, XMM1, FSxBX
469EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, XMM9
470EMIT_INSTR_PLUS_ICEBP_C64 mulsd, XMM8, FSxBX
471
472EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, XMM3
473EMIT_INSTR_PLUS_ICEBP vmulsd, XMM1, XMM2, FSxBX
474EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, XMM10
475EMIT_INSTR_PLUS_ICEBP_C64 vmulsd, XMM8, XMM9, FSxBX
476
477;
478;; [v]divps
479;
480EMIT_INSTR_PLUS_ICEBP divps, XMM1, XMM2
481EMIT_INSTR_PLUS_ICEBP divps, XMM1, FSxBX
482EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, XMM9
483EMIT_INSTR_PLUS_ICEBP_C64 divps, XMM8, FSxBX
484
485EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, XMM3
486EMIT_INSTR_PLUS_ICEBP vdivps, XMM1, XMM2, FSxBX
487EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, XMM10
488EMIT_INSTR_PLUS_ICEBP_C64 vdivps, XMM8, XMM9, FSxBX
489
490EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, YMM3
491EMIT_INSTR_PLUS_ICEBP vdivps, YMM1, YMM2, FSxBX
492EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, YMM10
493EMIT_INSTR_PLUS_ICEBP_C64 vdivps, YMM8, YMM9, FSxBX
494
495;
496;; [v]divpd
497;
498EMIT_INSTR_PLUS_ICEBP divpd, XMM1, XMM2
499EMIT_INSTR_PLUS_ICEBP divpd, XMM1, FSxBX
500EMIT_INSTR_PLUS_ICEBP_C64 divpd, XMM8, XMM9
501EMIT_INSTR_PLUS_ICEBP_C64 divpd, XMM8, FSxBX
502
503EMIT_INSTR_PLUS_ICEBP vdivpd, XMM1, XMM2, XMM3
504EMIT_INSTR_PLUS_ICEBP vdivpd, XMM1, XMM2, FSxBX
505EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, XMM8, XMM9, XMM10
506EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, XMM8, XMM9, FSxBX
507
508EMIT_INSTR_PLUS_ICEBP vdivpd, YMM1, YMM2, YMM3
509EMIT_INSTR_PLUS_ICEBP vdivpd, YMM1, YMM2, FSxBX
510EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, YMM8, YMM9, YMM10
511EMIT_INSTR_PLUS_ICEBP_C64 vdivpd, YMM8, YMM9, FSxBX
512
513;
514;; [v]divss
515;
516EMIT_INSTR_PLUS_ICEBP divss, XMM1, XMM2
517EMIT_INSTR_PLUS_ICEBP divss, XMM1, FSxBX
518EMIT_INSTR_PLUS_ICEBP_C64 divss, XMM8, XMM9
519EMIT_INSTR_PLUS_ICEBP_C64 divss, XMM8, FSxBX
520
521EMIT_INSTR_PLUS_ICEBP vdivss, XMM1, XMM2, XMM3
522EMIT_INSTR_PLUS_ICEBP vdivss, XMM1, XMM2, FSxBX
523EMIT_INSTR_PLUS_ICEBP_C64 vdivss, XMM8, XMM9, XMM10
524EMIT_INSTR_PLUS_ICEBP_C64 vdivss, XMM8, XMM9, FSxBX
525
526;
527;; [v]divsd
528;
529EMIT_INSTR_PLUS_ICEBP divsd, XMM1, XMM2
530EMIT_INSTR_PLUS_ICEBP divsd, XMM1, FSxBX
531EMIT_INSTR_PLUS_ICEBP_C64 divsd, XMM8, XMM9
532EMIT_INSTR_PLUS_ICEBP_C64 divsd, XMM8, FSxBX
533
534EMIT_INSTR_PLUS_ICEBP vdivsd, XMM1, XMM2, XMM3
535EMIT_INSTR_PLUS_ICEBP vdivsd, XMM1, XMM2, FSxBX
536EMIT_INSTR_PLUS_ICEBP_C64 vdivsd, XMM8, XMM9, XMM10
537EMIT_INSTR_PLUS_ICEBP_C64 vdivsd, XMM8, XMM9, FSxBX
538
539;
540;; [v]addsubps
541;
542EMIT_INSTR_PLUS_ICEBP addsubps, XMM1, XMM2
543EMIT_INSTR_PLUS_ICEBP addsubps, XMM1, FSxBX
544EMIT_INSTR_PLUS_ICEBP_C64 addsubps, XMM8, XMM9
545EMIT_INSTR_PLUS_ICEBP_C64 addsubps, XMM8, FSxBX
546
547EMIT_INSTR_PLUS_ICEBP vaddsubps, XMM1, XMM2, XMM3
548EMIT_INSTR_PLUS_ICEBP vaddsubps, XMM1, XMM2, FSxBX
549EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, XMM8, XMM9, XMM10
550EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, XMM8, XMM9, FSxBX
551
552EMIT_INSTR_PLUS_ICEBP vaddsubps, YMM1, YMM2, YMM3
553EMIT_INSTR_PLUS_ICEBP vaddsubps, YMM1, YMM2, FSxBX
554EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, YMM13, YMM14, YMM15
555EMIT_INSTR_PLUS_ICEBP_C64 vaddsubps, YMM13, YMM14, FSxBX
556
557;
558;; [v]addsubpd
559;
560EMIT_INSTR_PLUS_ICEBP addsubpd, XMM1, XMM2
561EMIT_INSTR_PLUS_ICEBP addsubpd, XMM1, FSxBX
562EMIT_INSTR_PLUS_ICEBP_C64 addsubpd, XMM8, XMM9
563EMIT_INSTR_PLUS_ICEBP_C64 addsubpd, XMM8, FSxBX
564
565EMIT_INSTR_PLUS_ICEBP vaddsubpd, XMM1, XMM2, XMM3
566EMIT_INSTR_PLUS_ICEBP vaddsubpd, XMM1, XMM2, FSxBX
567EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, XMM8, XMM9, XMM10
568EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, XMM8, XMM9, FSxBX
569
570EMIT_INSTR_PLUS_ICEBP vaddsubpd, YMM1, YMM2, YMM3
571EMIT_INSTR_PLUS_ICEBP vaddsubpd, YMM1, YMM2, FSxBX
572EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, YMM13, YMM14, YMM15
573EMIT_INSTR_PLUS_ICEBP_C64 vaddsubpd, YMM13, YMM14, FSxBX
574
575;
576;; [v]maxps
577;
578EMIT_INSTR_PLUS_ICEBP maxps, XMM1, XMM2
579EMIT_INSTR_PLUS_ICEBP maxps, XMM1, FSxBX
580EMIT_INSTR_PLUS_ICEBP_C64 maxps, XMM8, XMM9
581EMIT_INSTR_PLUS_ICEBP_C64 maxps, XMM8, FSxBX
582
583EMIT_INSTR_PLUS_ICEBP vmaxps, XMM1, XMM2, XMM3
584EMIT_INSTR_PLUS_ICEBP vmaxps, XMM1, XMM2, FSxBX
585EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, XMM8, XMM9, XMM10
586EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, XMM8, XMM9, FSxBX
587
588EMIT_INSTR_PLUS_ICEBP vmaxps, YMM1, YMM2, YMM3
589EMIT_INSTR_PLUS_ICEBP vmaxps, YMM1, YMM2, FSxBX
590EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, YMM8, YMM9, YMM10
591EMIT_INSTR_PLUS_ICEBP_C64 vmaxps, YMM8, YMM9, FSxBX
592
593;
594;; [v]maxpd
595;
596EMIT_INSTR_PLUS_ICEBP maxpd, XMM1, XMM2
597EMIT_INSTR_PLUS_ICEBP maxpd, XMM1, FSxBX
598EMIT_INSTR_PLUS_ICEBP_C64 maxpd, XMM8, XMM9
599EMIT_INSTR_PLUS_ICEBP_C64 maxpd, XMM8, FSxBX
600
601EMIT_INSTR_PLUS_ICEBP vmaxpd, XMM1, XMM2, XMM3
602EMIT_INSTR_PLUS_ICEBP vmaxpd, XMM1, XMM2, FSxBX
603EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, XMM8, XMM9, XMM10
604EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, XMM8, XMM9, FSxBX
605
606EMIT_INSTR_PLUS_ICEBP vmaxpd, YMM1, YMM2, YMM3
607EMIT_INSTR_PLUS_ICEBP vmaxpd, YMM1, YMM2, FSxBX
608EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, YMM8, YMM9, YMM10
609EMIT_INSTR_PLUS_ICEBP_C64 vmaxpd, YMM8, YMM9, FSxBX
610
611;
612;; [v]maxss
613;
614EMIT_INSTR_PLUS_ICEBP maxss, XMM3, XMM4
615EMIT_INSTR_PLUS_ICEBP maxss, XMM3, FSxBX
616EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, XMM9
617EMIT_INSTR_PLUS_ICEBP_C64 maxss, XMM8, FSxBX
618
619EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, XMM7
620EMIT_INSTR_PLUS_ICEBP vmaxss, XMM1, XMM6, FSxBX
621EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, XMM10
622EMIT_INSTR_PLUS_ICEBP_C64 vmaxss, XMM8, XMM9, FSxBX
623
624;
625;; [v]maxsd
626;
627EMIT_INSTR_PLUS_ICEBP maxsd, XMM3, XMM4
628EMIT_INSTR_PLUS_ICEBP maxsd, XMM3, FSxBX
629EMIT_INSTR_PLUS_ICEBP_C64 maxsd, XMM8, XMM9
630EMIT_INSTR_PLUS_ICEBP_C64 maxsd, XMM8, FSxBX
631
632EMIT_INSTR_PLUS_ICEBP vmaxsd, XMM1, XMM6, XMM7
633EMIT_INSTR_PLUS_ICEBP vmaxsd, XMM1, XMM6, FSxBX
634EMIT_INSTR_PLUS_ICEBP_C64 vmaxsd, XMM8, XMM9, XMM10
635EMIT_INSTR_PLUS_ICEBP_C64 vmaxsd, XMM8, XMM9, FSxBX
636
637;
638;; [v]minps
639;
640EMIT_INSTR_PLUS_ICEBP minps, XMM1, XMM2
641EMIT_INSTR_PLUS_ICEBP minps, XMM1, FSxBX
642EMIT_INSTR_PLUS_ICEBP_C64 minps, XMM8, XMM9
643EMIT_INSTR_PLUS_ICEBP_C64 minps, XMM8, FSxBX
644
645EMIT_INSTR_PLUS_ICEBP vminps, XMM1, XMM2, XMM3
646EMIT_INSTR_PLUS_ICEBP vminps, XMM1, XMM2, FSxBX
647EMIT_INSTR_PLUS_ICEBP_C64 vminps, XMM8, XMM9, XMM10
648EMIT_INSTR_PLUS_ICEBP_C64 vminps, XMM8, XMM9, FSxBX
649
650EMIT_INSTR_PLUS_ICEBP vminps, YMM1, YMM2, YMM3
651EMIT_INSTR_PLUS_ICEBP vminps, YMM1, YMM2, FSxBX
652EMIT_INSTR_PLUS_ICEBP_C64 vminps, YMM8, YMM9, YMM10
653EMIT_INSTR_PLUS_ICEBP_C64 vminps, YMM8, YMM9, FSxBX
654
655;
656;; [v]minpd
657;
658EMIT_INSTR_PLUS_ICEBP minpd, XMM1, XMM2
659EMIT_INSTR_PLUS_ICEBP minpd, XMM1, FSxBX
660EMIT_INSTR_PLUS_ICEBP_C64 minpd, XMM8, XMM9
661EMIT_INSTR_PLUS_ICEBP_C64 minpd, XMM8, FSxBX
662
663EMIT_INSTR_PLUS_ICEBP vminpd, XMM1, XMM2, XMM3
664EMIT_INSTR_PLUS_ICEBP vminpd, XMM1, XMM2, FSxBX
665EMIT_INSTR_PLUS_ICEBP_C64 vminpd, XMM8, XMM9, XMM10
666EMIT_INSTR_PLUS_ICEBP_C64 vminpd, XMM8, XMM9, FSxBX
667
668EMIT_INSTR_PLUS_ICEBP vminpd, YMM1, YMM2, YMM3
669EMIT_INSTR_PLUS_ICEBP vminpd, YMM1, YMM2, FSxBX
670EMIT_INSTR_PLUS_ICEBP_C64 vminpd, YMM8, YMM9, YMM10
671EMIT_INSTR_PLUS_ICEBP_C64 vminpd, YMM8, YMM9, FSxBX
672
673;
674;; [v]minss
675;
676EMIT_INSTR_PLUS_ICEBP minss, XMM3, XMM4
677EMIT_INSTR_PLUS_ICEBP minss, XMM3, FSxBX
678EMIT_INSTR_PLUS_ICEBP_C64 minss, XMM8, XMM9
679EMIT_INSTR_PLUS_ICEBP_C64 minss, XMM8, FSxBX
680
681EMIT_INSTR_PLUS_ICEBP vminss, XMM1, XMM6, XMM7
682EMIT_INSTR_PLUS_ICEBP vminss, XMM1, XMM6, FSxBX
683EMIT_INSTR_PLUS_ICEBP_C64 vminss, XMM8, XMM9, XMM10
684EMIT_INSTR_PLUS_ICEBP_C64 vminss, XMM8, XMM9, FSxBX
685
686;
687;; [v]minsd
688;
689EMIT_INSTR_PLUS_ICEBP minsd, XMM3, XMM4
690EMIT_INSTR_PLUS_ICEBP minsd, XMM3, FSxBX
691EMIT_INSTR_PLUS_ICEBP_C64 minsd, XMM8, XMM9
692EMIT_INSTR_PLUS_ICEBP_C64 minsd, XMM8, FSxBX
693
694EMIT_INSTR_PLUS_ICEBP vminsd, XMM1, XMM6, XMM7
695EMIT_INSTR_PLUS_ICEBP vminsd, XMM1, XMM6, FSxBX
696EMIT_INSTR_PLUS_ICEBP_C64 vminsd, XMM8, XMM9, XMM10
697EMIT_INSTR_PLUS_ICEBP_C64 vminsd, XMM8, XMM9, FSxBX
698
699;
700;; [v]rcpps
701;
702EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, XMM2
703EMIT_INSTR_PLUS_ICEBP rcpps, XMM1, FSxBX
704EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, XMM9
705EMIT_INSTR_PLUS_ICEBP_C64 rcpps, XMM8, FSxBX
706
707EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, XMM2
708EMIT_INSTR_PLUS_ICEBP vrcpps, XMM1, FSxBX
709EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, XMM9
710EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, XMM8, FSxBX
711
712EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, YMM2
713EMIT_INSTR_PLUS_ICEBP vrcpps, YMM1, FSxBX
714EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, YMM9
715EMIT_INSTR_PLUS_ICEBP_C64 vrcpps, YMM8, FSxBX
716
717;
718;; [v]rcpss
719;
720EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, XMM2
721EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, FSxBX
722EMIT_INSTR_PLUS_ICEBP_C64 rcpss, XMM8, XMM9
723EMIT_INSTR_PLUS_ICEBP_C64 rcpss, XMM8, FSxBX
724
725EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, XMM3
726EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, FSxBX
727EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, XMM15
728EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, FSxBX
729
730EMIT_INSTR_PLUS_ICEBP rcpss, XMM1, XMM1
731EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, XMM1
732EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, XMM2
733EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM2, XMM2
734EMIT_INSTR_PLUS_ICEBP vrcpss, XMM1, XMM1, FSxBX
735EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM15, XMM15, XMM15
736EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM15, XMM15, XMM13
737EMIT_INSTR_PLUS_ICEBP_C64 vrcpss, XMM13, XMM14, XMM14
738
739;
740;; [v]sqrtps
741;
742EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, XMM2
743EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, FSxBX
744EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, XMM9
745EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, FSxBX
746
747EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, XMM2
748EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, FSxBX
749EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, XMM8, XMM9
750EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, XMM8, FSxBX
751
752EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, YMM2
753EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, FSxBX
754EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, YMM9
755EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, FSxBX
756
757EMIT_INSTR_PLUS_ICEBP sqrtps, XMM1, XMM1
758EMIT_INSTR_PLUS_ICEBP_C64 sqrtps, XMM8, XMM8
759EMIT_INSTR_PLUS_ICEBP vsqrtps, XMM1, XMM1
760EMIT_INSTR_PLUS_ICEBP vsqrtps, YMM1, YMM1
761EMIT_INSTR_PLUS_ICEBP_C64 vsqrtps, YMM8, YMM8
762
763;
764;; [v]sqrtpd
765;
766EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, XMM2
767EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, FSxBX
768EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, XMM9
769EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, FSxBX
770
771EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, XMM2
772EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, FSxBX
773EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, XMM8, XMM9
774EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, XMM8, FSxBX
775
776EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, YMM2
777EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, FSxBX
778EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, YMM9
779EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, FSxBX
780
781EMIT_INSTR_PLUS_ICEBP sqrtpd, XMM1, XMM1
782EMIT_INSTR_PLUS_ICEBP_C64 sqrtpd, XMM8, XMM8
783EMIT_INSTR_PLUS_ICEBP vsqrtpd, XMM1, XMM1
784EMIT_INSTR_PLUS_ICEBP vsqrtpd, YMM1, YMM1
785EMIT_INSTR_PLUS_ICEBP_C64 vsqrtpd, YMM8, YMM8
786
787;
788;; [v]sqrtss
789;
790EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, XMM2
791EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, FSxBX
792EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, XMM9
793EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, FSxBX
794
795EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, XMM3
796EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, FSxBX
797EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM9, XMM10
798EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM9, FSxBX
799
800EMIT_INSTR_PLUS_ICEBP sqrtss, XMM1, XMM1
801EMIT_INSTR_PLUS_ICEBP_C64 sqrtss, XMM8, XMM8
802EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, XMM1
803EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, XMM2
804EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM2, XMM2
805EMIT_INSTR_PLUS_ICEBP_C64 vsqrtss, XMM8, XMM8, XMM8
806EMIT_INSTR_PLUS_ICEBP vsqrtss, XMM1, XMM1, FSxBX
807
808;
809;; [v]sqrtsd
810;
811EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, XMM2
812EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, FSxBX
813EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, XMM9
814EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, FSxBX
815
816EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, XMM3
817EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, FSxBX
818EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM9, XMM10
819EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM9, FSxBX
820
821EMIT_INSTR_PLUS_ICEBP sqrtsd, XMM1, XMM1
822EMIT_INSTR_PLUS_ICEBP_C64 sqrtsd, XMM8, XMM8
823EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, XMM1
824EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, XMM2
825EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM2, XMM2
826EMIT_INSTR_PLUS_ICEBP_C64 vsqrtsd, XMM8, XMM8, XMM8
827EMIT_INSTR_PLUS_ICEBP vsqrtsd, XMM1, XMM1, FSxBX
828
829;
830;; [v]rsqrtps
831;
832EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, XMM2
833EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, FSxBX
834EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, XMM9
835EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, FSxBX
836
837EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, XMM2
838EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, FSxBX
839EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, XMM8, XMM9
840EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, XMM8, FSxBX
841
842EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, YMM2
843EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, FSxBX
844EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, YMM9
845EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, FSxBX
846
847EMIT_INSTR_PLUS_ICEBP rsqrtps, XMM1, XMM1
848EMIT_INSTR_PLUS_ICEBP_C64 rsqrtps, XMM8, XMM8
849EMIT_INSTR_PLUS_ICEBP vrsqrtps, XMM1, XMM1
850EMIT_INSTR_PLUS_ICEBP vrsqrtps, YMM1, YMM1
851EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtps, YMM8, YMM8
852
853;
854;; [v]rsqrtss
855;
856EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, XMM2
857EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, FSxBX
858EMIT_INSTR_PLUS_ICEBP_C64 rsqrtss, XMM8, XMM9
859EMIT_INSTR_PLUS_ICEBP_C64 rsqrtss, XMM8, FSxBX
860
861EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, XMM3
862EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, FSxBX
863EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM9, XMM10
864EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM9, FSxBX
865
866EMIT_INSTR_PLUS_ICEBP rsqrtss, XMM1, XMM1
867EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, XMM1
868EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, XMM2
869EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM2, XMM2
870EMIT_INSTR_PLUS_ICEBP vrsqrtss, XMM1, XMM1, FSxBX
871EMIT_INSTR_PLUS_ICEBP_C64 vrsqrtss, XMM8, XMM8, XMM8
872
873;
874;; cvtpi2ps
875;
876; SSE-128, int32 -> fp32 (packed:2; from MMX register)
877EMIT_INSTR_PLUS_ICEBP cvtpi2ps, XMM1, MM1
878EMIT_INSTR_PLUS_ICEBP cvtpi2ps, XMM1, FSxBX
879EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2ps, XMM8, MM1
880EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2ps, XMM8, FSxBX
881; note: transition from x87 FPU to MMX; takes FPU exceptions (SDM does not mention MM forms only?)
882;
883;; cvtps2pi
884;
885; SSE-128, fp32 -> int32 (packed:2; to MMX register)
886EMIT_INSTR_PLUS_ICEBP cvtps2pi, MM1, XMM1
887EMIT_INSTR_PLUS_ICEBP cvtps2pi, MM1, FSxBX
888EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pi, MM1, XMM8
889; note: transition from x87 FPU to MMX; takes FPU exceptions
890
891;
892;; cvttps2pi
893;
894; SSE-128, fp32 -> int32 (packed:2; truncated; to MMX register)
895EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, XMM1
896EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, FSxBX
897EMIT_INSTR_PLUS_ICEBP_C64 cvttps2pi, MM1, XMM8
898; note: transition from x87 FPU to MMX; takes FPU exceptions
899;
900;; cvtsi2ss
901;
902; SSE-128, int32 -> fp32 (single)
903EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, EAX
904EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, FSxBX_D
905EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8D
906EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_D
907; SSE-128, int64 -> fp32 (single)
908EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, RAX
909EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, FSxBX_Q
910EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8
911EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_Q
912; AVX-128, int32 -> fp32 (single)
913EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, EAX
914EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_D
915EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8D
916EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_D
917; AVX-128, int64 -> fp32 (single)
918EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, RAX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
919EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_Q ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
920EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8
921EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_Q
922; AVX-128, int32 -> fp32, same-reg (single)
923EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, EAX
924EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_D
925EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8D
926EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_D
927; AVX-128, int64 -> fp32, same-reg (single)
928EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, RAX ;; @todo this assembles in 16/32 mode, but should it...?
929EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_Q ;; @todo this assembles in 16/32 mode, but should it...?
930EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8
931EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_Q
932; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
933; @todo same-reg int32 -> fp32 (SDM says W1 ignored in 32-bit modes) (see above)
934
935;
936;; cvtss2si
937;
938; SSE-128, fp32 -> int32
939EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, XMM1
940EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, FSxBX
941EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, XMM8
942EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, FSxBX
943; SSE-128, fp32 -> int64
944EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, XMM1
945EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, FSxBX
946EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, XMM8
947EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, FSxBX
948; AVX-128, fp32 -> int32
949EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, XMM1
950EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, FSxBX
951EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, XMM8
952EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, FSxBX
953; AVX-128, fp32 -> int64
954EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, XMM1
955EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, FSxBX
956EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, XMM8
957EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, FSxBX
958; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
959; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
960
961;
962;; cvttss2si
963;
964; SSE-128, fp32 -> int32 (single; truncated)
965EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, XMM1
966EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, FSxBX
967EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, XMM8
968EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, FSxBX
969; SSE-128, fp32 -> int64 (single; truncated)
970EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, XMM1
971EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, FSxBX
972EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, XMM8
973EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, FSxBX
974; AVX-128, fp32 -> int32 (single; truncated)
975EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, XMM1
976EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, FSxBX
977EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, XMM8
978EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, FSxBX
979; AVX-128, fp32 -> int64 (single; truncated)
980EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, XMM1
981EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, FSxBX
982EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, XMM8
983EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, FSxBX
984; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
985; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
986
987;
988;; cvtpi2pd
989;
990; SSE-128, int32 -> fp64 (packed:2; from MMX register)
991EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, MM1
992EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, FSxBX
993EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, MM1
994EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, FSxBX
995; note: transition from x87 FPU to MMX; takes FPU exceptions (MM forms only)
996
997;
998;; cvtpd2pi
999;
1000; SSE-128, fp64 -> int32 (packed:2; to MMX register)
1001EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, XMM1
1002EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, FSxBX
1003EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2pi, MM1, XMM8
1004; note: transition from x87 FPU to MMX; takes FPU exceptions
1005
1006;
1007;; cvttpd2pi
1008;
1009; SSE-128, fp64 -> int32 (packed:2; truncated; to MMX register)
1010EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, XMM1
1011EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, FSxBX
1012EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2pi, MM1, XMM8
1013; note: transition from x87 FPU to MMX; takes FPU exceptions
1014
1015;
1016;; cvtsi2sd
1017;
1018; SSE-128, int32 -> fp64 (single)
1019EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, EAX
1020EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, FSxBX_D
1021EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8D
1022EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_D
1023; SSE-128, int64 -> fp64 (single)
1024EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, RAX
1025EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, FSxBX_Q
1026EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8
1027EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_Q
1028; AVX-128, int32 -> fp64 (single)
1029EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, EAX
1030EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_D
1031EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, EAX
1032EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_D
1033; AVX-128, int64 -> fp64 (single)
1034EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, RAX
1035EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_Q
1036EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, RAX
1037EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_Q
1038; AVX-128, int32 -> fp64, same-reg (single)
1039EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, EAX
1040EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_D
1041EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, EAX
1042EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_D
1043; AVX-128, int64 -> fp64, same-reg (single)
1044EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, RAX
1045EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_Q
1046EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, RAX
1047EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_Q
1048; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1049; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1050
1051;
1052;; cvtsd2si
1053;
1054; SSE-128, fp64 -> int32 (single)
1055EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, XMM1
1056EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, FSxBX
1057EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, XMM8
1058EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, FSxBX
1059; SSE-128, fp64 -> int64 (single)
1060EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, XMM1
1061EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, FSxBX
1062EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, XMM8
1063EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, FSxBX
1064; AVX-128, fp64 -> int32 (single)
1065EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, XMM1
1066EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, FSxBX
1067EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, XMM8
1068EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, FSxBX
1069; AVX-128, fp64 -> int64 (single)
1070EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, XMM1 ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1071EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, FSxBX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1072EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, XMM8
1073EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, FSxBX
1074; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1075; @todo same-reg int32 -> fp32 (SDM says W1 ignored in 32-bit modes) (see above)
1076
1077;
1078;; cvttsd2si
1079;
1080; SSE-128, fp64 -> int32 (single; truncated)
1081EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, XMM1
1082EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, FSxBX
1083EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, XMM8
1084EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, FSxBX
1085; SSE-128, fp64 -> int64 (single; truncated)
1086EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, XMM1
1087EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, FSxBX
1088EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, XMM8
1089EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, FSxBX
1090; AVX-128, fp64 -> int32 (single; truncated)
1091EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, XMM1
1092EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, FSxBX
1093EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, XMM8
1094EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, FSxBX
1095; AVX-128, fp64 -> int64 (single; truncated)
1096EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, XMM1
1097EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, FSxBX
1098EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, XMM8
1099EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, FSxBX
1100; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1101; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1102
1103;
1104;; cvtdq2ps
1105;
1106; SSE-128, int32 -> fp32 (packed:4)
1107EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM2
1108EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, FSxBX
1109EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM9
1110EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, FSxBX
1111; AVX-128, int32 -> fp32 (packed:4)
1112EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM2
1113EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, FSxBX
1114EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM9
1115EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, FSxBX
1116; AVX-256, int32 -> fp32 (packed:8)
1117EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM2
1118EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, FSxBX
1119EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM9
1120EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, FSxBX
1121; SSE-128, int32 -> fp32, same-reg (packed:4)
1122EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM1
1123EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM8
1124; AVX-128, int32 -> fp32, same-reg (packed:4)
1125EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM1
1126EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM8
1127; AVX-256, int32 -> fp32, same-reg (packed:8)
1128EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM1
1129EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM8
1130
1131;
1132;; cvtps2dq
1133;
1134; SSE-128, fp32 -> int32 (packed:4)
1135EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM2
1136EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, FSxBX
1137EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM9
1138EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, FSxBX
1139; AVX-128, fp32 -> int32 (packed:4)
1140EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM2
1141EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, FSxBX
1142EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM9
1143EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, FSxBX
1144; AVX-256, fp32 -> int32 (packed:8)
1145EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM2
1146EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, FSxBX
1147EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM9
1148EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, FSxBX
1149; SSE-128, fp32 -> int32, same-reg (packed:4)
1150EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM1
1151EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM8
1152; AVX-128, fp32 -> int32, same-reg (packed:4)
1153EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM1
1154EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM8
1155; AVX-256, fp32 -> int32, same-reg (packed:8)
1156EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM1
1157EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM8
1158
1159;
1160;; cvttps2dq
1161;
1162; SSE-128, fp32 -> int32 (packed:4; truncated)
1163EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM2
1164EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, FSxBX_O
1165EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM9
1166EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, FSxBX_O
1167; AVX-128, fp32 -> int32 (packed:4; truncated)
1168EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM2
1169EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, FSxBX_O
1170EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM9
1171EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, FSxBX_O
1172; AVX-256, fp32 -> int32 (packed:8; truncated)
1173EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM2
1174EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, FSxBX_Y
1175EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM9
1176EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, FSxBX_Y
1177; AVX-128, fp32 -> int32, same-reg (packed:4; truncated)
1178EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM1
1179EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM8
1180; AVX-128, fp32 -> int32, same-reg (packed:4; truncated)
1181EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM1
1182EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM8
1183; AVX-256, fp32 -> int32, same-reg (packed:8; truncated)
1184EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM1
1185EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM8
1186
1187;
1188;; cvtdq2pd
1189;
1190; SSE-128, int32 -> fp64 (packed:2)
1191EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM2
1192EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, FSxBX
1193EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM9
1194EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, FSxBX
1195; AVX-128, int32 -> fp64 (packed:2)
1196EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM2
1197EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, FSxBX
1198EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM9
1199EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, FSxBX
1200; AVX-256, int32 -> fp64 (packed:4)
1201EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM2
1202EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, FSxBX
1203EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM9
1204EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, FSxBX
1205; SSE-128, int32 -> fp64, same-reg (packed:2)
1206EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM1
1207EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM8
1208; AVX-128, int32 -> fp64, same-reg (packed:2)
1209EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM1
1210EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM8
1211; AVX-256, int32 -> fp64, same-reg (packed:4)
1212EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM1
1213EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM8
1214
1215;
1216;; cvtpd2dq
1217;
1218; SSE-128, fp64 -> int32 (packed:2)
1219EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM2
1220EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, FSxBX
1221EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM9
1222EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, FSxBX
1223; AVX-128, fp64 -> int32 (packed:2)
1224EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM2
1225EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, FSxBX
1226EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM9
1227EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, FSxBX
1228; AVX-256, fp64 -> int32 (packed:4)
1229EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM2
1230EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, YMM1, FSxBX
1231EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM9
1232EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, YMM8, FSxBX
1233; SSE-128, fp64 -> int32, same-reg (packed:2)
1234EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM1
1235EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM8
1236; AVX-128, fp64 -> int32, same-reg (packed:2)
1237EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM1
1238EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM8
1239; AVX-256, fp64 -> int32, same-reg (packed:4)
1240EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM1
1241EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM8
1242
1243;
1244;; cvttpd2dq
1245;
1246; SSE-128, fp64 -> int32 (packed:2; truncated)
1247EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM2
1248EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, FSxBX_O
1249EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM9
1250EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, FSxBX_O
1251; AVX-128, fp64 -> int32 (packed:2; truncated)
1252EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM2
1253EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX_O
1254EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM9
1255EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX_O
1256; AVX-256, fp64 -> int32 (packed:4; truncated)
1257EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM2
1258EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX_Y
1259EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM9
1260EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX_Y
1261; AVX-128, fp64 -> int32, same-reg (packed:2; truncated)
1262EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM1
1263EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM8
1264; AVX-128, fp64 -> int32, same-reg (packed:2; truncated)
1265EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM1
1266EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM8
1267; AVX-256, fp64 -> int32, same-reg (packed:4; truncated)
1268EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM1
1269EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM8
1270
1271;
1272;; cvtpd2ps
1273;
1274; SSE-128, fp64 -> fp32 (packed:2)
1275EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM2
1276EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, FSxBX
1277EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM9
1278EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, FSxBX
1279; AVX-128, fp64 -> fp32 (packed:2)
1280EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM2
1281EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_O
1282EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM9
1283EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_O
1284; AVX-256, fp64 -> fp32 (packed:4)
1285EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM2
1286EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_Y
1287EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM9
1288EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_Y
1289; SSE-128, fp64 -> fp32, same-reg (packed:2)
1290EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM1
1291EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM8
1292; AVX-128, fp64 -> fp32, same-reg (packed:2)
1293EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM1
1294EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM8
1295; AVX-256, fp64 -> fp32, same-reg (packed:4)
1296EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM1
1297EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM8
1298
1299;
1300;; cvtps2pd
1301;
1302; SSE-128, fp32 -> fp64 (packed:2)
1303EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM2
1304EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, FSxBX
1305EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM9
1306EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, FSxBX
1307; AVX-128, fp32 -> fp64 (packed:2)
1308EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM2
1309EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, FSxBX
1310EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM9
1311EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, FSxBX
1312; AVX-256, fp32 -> fp64 (packed:4)
1313EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM2
1314EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, FSxBX_O
1315EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM9
1316EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, FSxBX_O
1317; SSE-128, fp32 -> fp64, same-reg (packed:2)
1318EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM1
1319EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM8
1320; AVX-128, fp32 -> fp64, same-reg (packed:2)
1321EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM1
1322EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM8
1323; AVX-256, fp32 -> fp64, same-reg (packed:4)
1324EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM1
1325EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM8
1326
1327;
1328;; cvtsd2ss
1329;
1330; SSE-128, fp64 -> fp32 (single)
1331EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM2
1332EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, FSxBX
1333EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM9
1334EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, FSxBX
1335; AVX-128, fp64 -> fp32 (single)
1336EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, XMM3
1337EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, FSxBX
1338EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, XMM10
1339EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, FSxBX
1340; SSE-128, fp64 -> fp32, same-reg (single)
1341EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM1
1342EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM8
1343; AVX-128, fp64 -> fp32, same-reg (single)
1344EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, XMM1
1345EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM1, XMM8
1346EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM8, XMM8
1347EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM8, XMM1
1348EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, FSxBX
1349EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, XMM8
1350EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, FSxBX
1351; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1352
1353;
1354;; cvtss2sd
1355;
1356; SSE-128, fp32 -> fp64 (single)
1357EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM2
1358EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, FSxBX
1359EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM9
1360EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, FSxBX
1361; AVX-128, fp32 -> fp64 (single)
1362EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, XMM3
1363EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, FSxBX
1364EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, XMM10
1365EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, FSxBX
1366; SSE-128, fp32 -> fp64, same-reg (single)
1367EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM1
1368EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM8
1369; AVX-128, fp32 -> fp64, same-reg (single)
1370EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, XMM1
1371EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM1, XMM8
1372EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM8, XMM8
1373EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM8, XMM1
1374EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, FSxBX
1375EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, XMM8
1376EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, FSxBX
1377; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1378
1379%endif ; BS3_INSTANTIATING_CMN
1380
1381%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