VirtualBox

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

Last change on this file since 106743 was 106733, checked in by vboxsync, 5 weeks ago

ValidationKit/bootsectors: Implement SISD FP testcases for cvtsi2ss; bugref:10658; jiraref:VBP-1206

Bs3ExtCtxSetReg:

  • fix bs3CpuInstrXGetRegisterName() for arbitrary FSxReg
  • use RTUINT256U in place of ad hoc casts
  • use a mostly-static context struct for Bs3ExtCtxSetReg() args
  • fix Bs3ExtCtxSetReg() on 64-bit GPRs in non-64-bit execution modes
  • add a debug flag to print Bs3ExtCtxSetReg() actions

ValKit bs3-cpu-instr-4 test worker:

  • add ability to mark an instruction test as always faulting

ValKit bs3-cpu-instr-4 test setup:

  • fix some macros needing more parentheses
  • fix integer macros & move them where they belong

ValKit:

  • implement cvtsi2ss tests
  • improve test-function emitter comments
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 51.9 KB
Line 
1; $Id: bs3-cpu-instr-4-template.mac 106733 2024-10-28 03:47:44Z 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, fp32 <- int32 (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
882;
883;; cvtps2pi
884;
885; SSE-128, int32 <- fp32 (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
890;
891;; cvttps2pi
892;
893; SSE-128, int32 <- fp32 (packed:2; truncated; to MMX register)
894EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, XMM1
895EMIT_INSTR_PLUS_ICEBP cvttps2pi, MM1, FSxBX
896EMIT_INSTR_PLUS_ICEBP_C64 cvttps2pi, MM1, XMM8
897
898;
899;; cvtsi2ss
900;
901; SSE-128, fp32 <- int32 (single)
902EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, EAX
903EMIT_INSTR_PLUS_ICEBP cvtsi2ss, XMM1, FSxBX_D
904EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8D
905EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_D
906; SSE-128, fp32 <- int64 (single)
907EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, RAX
908EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM1, FSxBX_Q
909EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, R8
910EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2ss, XMM8, FSxBX_Q
911; AVX-128, fp32 <- int32 (single)
912EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, EAX
913EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_D
914EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8D
915EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_D
916; AVX-128, fp32 <- int64 (single)
917EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, RAX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
918EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM2, FSxBX_Q ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
919EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, R8
920EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM9, FSxBX_Q
921; AVX-128, fp32 <- int32, same-reg (single)
922EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, EAX
923EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_D
924EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8D
925EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_D
926; AVX-128, fp32 <- int64, same-reg (single)
927EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, RAX ;; @todo this assembles in 16/32 mode, but should it...?
928EMIT_INSTR_PLUS_ICEBP vcvtsi2ss, XMM1, XMM1, FSxBX_Q ;; @todo this assembles in 16/32 mode, but should it...?
929EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, R8
930EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2ss, XMM8, XMM8, FSxBX_Q
931; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
932; @todo same-reg fp32 <- int32 (SDM says W1 ignored in 32-bit modes) (see above)
933
934;
935;; cvtss2si
936;
937; SSE-128, int32 <- fp32
938EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, XMM1
939EMIT_INSTR_PLUS_ICEBP cvtss2si, EAX, FSxBX
940EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, XMM8
941EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8D, FSxBX
942; SSE-128, int64 <- fp32
943EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, XMM1
944EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, RAX, FSxBX
945EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, XMM8
946EMIT_INSTR_PLUS_ICEBP_C64 cvtss2si, R8, FSxBX
947; AVX-128, int32 <- fp32
948EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, XMM1
949EMIT_INSTR_PLUS_ICEBP vcvtss2si, EAX, FSxBX
950EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, XMM8
951EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8D, FSxBX
952; AVX-128, int64 <- fp32
953EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, XMM1
954EMIT_INSTR_PLUS_ICEBP vcvtss2si, RAX, FSxBX
955EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, XMM8
956EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2si, R8, FSxBX
957; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
958; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
959
960;
961;; cvttss2si
962;
963; SSE-128, int32 <- fp32 (single; truncated)
964EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, XMM1
965EMIT_INSTR_PLUS_ICEBP cvttss2si, EAX, FSxBX
966EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, XMM8
967EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8D, FSxBX
968; SSE-128, int64 <- fp32 (single; truncated)
969EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, XMM1
970EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, RAX, FSxBX
971EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, XMM8
972EMIT_INSTR_PLUS_ICEBP_C64 cvttss2si, R8, FSxBX
973; AVX-128, int32 <- fp32 (single; truncated)
974EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, XMM1
975EMIT_INSTR_PLUS_ICEBP vcvttss2si, EAX, FSxBX
976EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, XMM8
977EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8D, FSxBX
978; AVX-128, int64 <- fp32 (single; truncated)
979EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, XMM1
980EMIT_INSTR_PLUS_ICEBP vcvttss2si, RAX, FSxBX
981EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, XMM8
982EMIT_INSTR_PLUS_ICEBP_C64 vcvttss2si, R8, FSxBX
983; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
984; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
985
986;
987;; cvtpi2pd
988;
989; SSE-128, fp64 <- int32 (packed:2; from MMX register)
990EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, MM1
991EMIT_INSTR_PLUS_ICEBP cvtpi2pd, XMM1, FSxBX
992EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, MM1
993EMIT_INSTR_PLUS_ICEBP_C64 cvtpi2pd, XMM8, FSxBX
994; note: transition from x87 FPU to MMX; takes FPU exceptions (MM forms only)
995
996;
997;; cvtpd2pi
998;
999; SSE-128, int32 <- fp64 (packed:2; to MMX register)
1000EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, XMM1
1001EMIT_INSTR_PLUS_ICEBP cvtpd2pi, MM1, FSxBX
1002EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2pi, MM1, XMM8
1003; note: transition from x87 FPU to MMX; takes FPU exceptions
1004
1005;
1006;; cvttpd2pi
1007;
1008; SSE-128, int32 <- fp64 (packed:2; truncated; to MMX register)
1009EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, XMM1
1010EMIT_INSTR_PLUS_ICEBP cvttpd2pi, MM1, FSxBX
1011EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2pi, MM1, XMM8
1012; note: transition from x87 FPU to MMX; takes FPU exceptions
1013
1014;
1015;; cvtsi2sd
1016;
1017; SSE-128, fp64 <- int32 (single)
1018EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, EAX
1019EMIT_INSTR_PLUS_ICEBP cvtsi2sd, XMM1, FSxBX_D
1020EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8D
1021EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_D
1022; SSE-128, fp64 <- int64 (single)
1023EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, RAX
1024EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM1, FSxBX_Q
1025EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, R8
1026EMIT_INSTR_PLUS_ICEBP_C64 cvtsi2sd, XMM8, FSxBX_Q
1027; AVX-128, fp64 <- int32 (single)
1028EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, EAX
1029EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_D
1030EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, EAX
1031EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_D
1032; AVX-128, fp64 <- int64 (single)
1033EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, RAX
1034EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM2, FSxBX_Q
1035EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, RAX
1036EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM9, FSxBX_Q
1037; AVX-128, fp64 <- int32, same-reg (single)
1038EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, EAX
1039EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_D
1040EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, EAX
1041EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_D
1042; AVX-128, fp64 <- int64, same-reg (single)
1043EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, RAX
1044EMIT_INSTR_PLUS_ICEBP vcvtsi2sd, XMM1, XMM1, FSxBX_Q
1045EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, RAX
1046EMIT_INSTR_PLUS_ICEBP_C64 vcvtsi2sd, XMM8, XMM8, FSxBX_Q
1047; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1048; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1049
1050;
1051;; cvtsd2si
1052;
1053; SSE-128, int32 <- fp64 (single)
1054EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, XMM1
1055EMIT_INSTR_PLUS_ICEBP cvtsd2si, EAX, FSxBX
1056EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, XMM8
1057EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8D, FSxBX
1058; SSE-128, int64 <- fp64 (single)
1059EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, XMM1
1060EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, RAX, FSxBX
1061EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, XMM8
1062EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2si, R8, FSxBX
1063; AVX-128, int32 <- fp64 (single)
1064EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, XMM1
1065EMIT_INSTR_PLUS_ICEBP vcvtsd2si, EAX, FSxBX
1066EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, XMM8
1067EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8D, FSxBX
1068; AVX-128, int64 <- fp64 (single)
1069EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, XMM1 ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1070EMIT_INSTR_PLUS_ICEBP vcvtsd2si, RAX, FSxBX ;; @todo this assembles in 16/32 mode; SDM says VEX.W1 ignored in non-64 bit
1071EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, XMM8
1072EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2si, R8, FSxBX
1073; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1074; @todo same-reg fp32 <- int32 (SDM says W1 ignored in 32-bit modes) (see above)
1075
1076;
1077;; cvttsd2si
1078;
1079; SSE-128, int32 <- fp64 (single; truncated)
1080EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, XMM1
1081EMIT_INSTR_PLUS_ICEBP cvttsd2si, EAX, FSxBX
1082EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, XMM8
1083EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8D, FSxBX
1084; SSE-128, int64 <- fp64 (single; truncated)
1085EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, XMM1
1086EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, RAX, FSxBX
1087EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, XMM8
1088EMIT_INSTR_PLUS_ICEBP_C64 cvttsd2si, R8, FSxBX
1089; AVX-128, int32 <- fp64 (single; truncated)
1090EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, XMM1
1091EMIT_INSTR_PLUS_ICEBP vcvttsd2si, EAX, FSxBX
1092EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, XMM8
1093EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8D, FSxBX
1094; AVX-128, int64 <- fp64 (single; truncated)
1095EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, XMM1
1096EMIT_INSTR_PLUS_ICEBP vcvttsd2si, RAX, FSxBX
1097EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, XMM8
1098EMIT_INSTR_PLUS_ICEBP_C64 vcvttsd2si, R8, FSxBX
1099; @todo test with VEX.W=1 in 16/32-bit modes; SDM says behaves as if W=0
1100; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1101
1102;
1103;; cvtdq2ps
1104;
1105; SSE-128, fp32 <- int32 (packed:4)
1106EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM2
1107EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, FSxBX
1108EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM9
1109EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, FSxBX
1110; AVX-128, fp32 <- int32 (packed:4)
1111EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM2
1112EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, FSxBX
1113EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM9
1114EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, FSxBX
1115; AVX-256, fp32 <- int32 (packed:8)
1116EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM2
1117EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, FSxBX
1118EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM9
1119EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, FSxBX
1120; SSE-128, fp32 <- int32, same-reg (packed:4)
1121EMIT_INSTR_PLUS_ICEBP cvtdq2ps, XMM1, XMM1
1122EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2ps, XMM8, XMM8
1123; AVX-128, fp32 <- int32, same-reg (packed:4)
1124EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, XMM1, XMM1
1125EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, XMM8, XMM8
1126; AVX-256, fp32 <- int32, same-reg (packed:8)
1127EMIT_INSTR_PLUS_ICEBP vcvtdq2ps, YMM1, YMM1
1128EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2ps, YMM8, YMM8
1129
1130;
1131;; cvtps2dq
1132;
1133; SSE-128, int32 <- fp32 (packed:4)
1134EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM2
1135EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, FSxBX
1136EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM9
1137EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, FSxBX
1138; AVX-128, int32 <- fp32 (packed:4)
1139EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM2
1140EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, FSxBX
1141EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM9
1142EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, FSxBX
1143; AVX-256, int32 <- fp32 (packed:8)
1144EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM2
1145EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, FSxBX
1146EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM9
1147EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, FSxBX
1148; SSE-128, int32 <- fp32, same-reg (packed:4)
1149EMIT_INSTR_PLUS_ICEBP cvtps2dq, XMM1, XMM1
1150EMIT_INSTR_PLUS_ICEBP_C64 cvtps2dq, XMM8, XMM8
1151; AVX-128, int32 <- fp32, same-reg (packed:4)
1152EMIT_INSTR_PLUS_ICEBP vcvtps2dq, XMM1, XMM1
1153EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, XMM8, XMM8
1154; AVX-256, int32 <- fp32, same-reg (packed:8)
1155EMIT_INSTR_PLUS_ICEBP vcvtps2dq, YMM1, YMM1
1156EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2dq, YMM8, YMM8
1157
1158;
1159;; cvttps2dq
1160;
1161; SSE-128, int32 <- fp32 (packed:4; truncated)
1162EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM2
1163EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, FSxBX_O
1164EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM9
1165EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, FSxBX_O
1166; AVX-128, int32 <- fp32 (packed:4; truncated)
1167EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM2
1168EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, FSxBX_O
1169EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM9
1170EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, FSxBX_O
1171; AVX-256, int32 <- fp32 (packed:8; truncated)
1172EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM2
1173EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, FSxBX_Y
1174EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM9
1175EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, FSxBX_Y
1176; AVX-128, int32 <- fp32, same-reg (packed:4; truncated)
1177EMIT_INSTR_PLUS_ICEBP cvttps2dq, XMM1, XMM1
1178EMIT_INSTR_PLUS_ICEBP_C64 cvttps2dq, XMM8, XMM8
1179; AVX-128, int32 <- fp32, same-reg (packed:4; truncated)
1180EMIT_INSTR_PLUS_ICEBP vcvttps2dq, XMM1, XMM1
1181EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, XMM8, XMM8
1182; AVX-256, int32 <- fp32, same-reg (packed:8; truncated)
1183EMIT_INSTR_PLUS_ICEBP vcvttps2dq, YMM1, YMM1
1184EMIT_INSTR_PLUS_ICEBP_C64 vcvttps2dq, YMM8, YMM8
1185
1186;
1187;; cvtdq2pd
1188;
1189; SSE-128, fp64 <- int32 (packed:2)
1190EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM2
1191EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, FSxBX
1192EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM9
1193EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, FSxBX
1194; AVX-128, fp64 <- int32 (packed:2)
1195EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM2
1196EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, FSxBX
1197EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM9
1198EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, FSxBX
1199; AVX-256, fp64 <- int32 (packed:4)
1200EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM2
1201EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, FSxBX
1202EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM9
1203EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, FSxBX
1204; SSE-128, fp64 <- int32, same-reg (packed:2)
1205EMIT_INSTR_PLUS_ICEBP cvtdq2pd, XMM1, XMM1
1206EMIT_INSTR_PLUS_ICEBP_C64 cvtdq2pd, XMM8, XMM8
1207; AVX-128, fp64 <- int32, same-reg (packed:2)
1208EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, XMM1, XMM1
1209EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, XMM8, XMM8
1210; AVX-256, fp64 <- int32, same-reg (packed:4)
1211EMIT_INSTR_PLUS_ICEBP vcvtdq2pd, YMM1, XMM1
1212EMIT_INSTR_PLUS_ICEBP_C64 vcvtdq2pd, YMM8, XMM8
1213
1214;
1215;; cvtpd2dq
1216;
1217; SSE-128, int32 <- fp64 (packed:2)
1218EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM2
1219EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, FSxBX
1220EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM9
1221EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, FSxBX
1222; AVX-128, int32 <- fp64 (packed:2)
1223EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM2
1224EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, FSxBX
1225EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM9
1226EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, FSxBX
1227; AVX-256, int32 <- fp64 (packed:4)
1228EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM2
1229EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, YMM1, FSxBX
1230EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM9
1231EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, YMM8, FSxBX
1232; SSE-128, int32 <- fp64, same-reg (packed:2)
1233EMIT_INSTR_PLUS_ICEBP cvtpd2dq, XMM1, XMM1
1234EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2dq, XMM8, XMM8
1235; AVX-128, int32 <- fp64, same-reg (packed:2)
1236EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, XMM1
1237EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, XMM8
1238; AVX-256, int32 <- fp64, same-reg (packed:4)
1239EMIT_INSTR_PLUS_ICEBP vcvtpd2dq, XMM1, YMM1
1240EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2dq, XMM8, YMM8
1241
1242;
1243;; cvttpd2dq
1244;
1245; SSE-128, int32 <- fp64 (packed:2; truncated)
1246EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM2
1247EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, FSxBX_O
1248EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM9
1249EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, FSxBX_O
1250; AVX-128, int32 <- fp64 (packed:2; truncated)
1251EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM2
1252EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX_O
1253EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM9
1254EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX_O
1255; AVX-256, int32 <- fp64 (packed:4; truncated)
1256EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM2
1257EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, FSxBX_Y
1258EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM9
1259EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, FSxBX_Y
1260; AVX-128, int32 <- fp64, same-reg (packed:2; truncated)
1261EMIT_INSTR_PLUS_ICEBP cvttpd2dq, XMM1, XMM1
1262EMIT_INSTR_PLUS_ICEBP_C64 cvttpd2dq, XMM8, XMM8
1263; AVX-128, int32 <- fp64, same-reg (packed:2; truncated)
1264EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, XMM1
1265EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, XMM8
1266; AVX-256, int32 <- fp64, same-reg (packed:4; truncated)
1267EMIT_INSTR_PLUS_ICEBP vcvttpd2dq, XMM1, YMM1
1268EMIT_INSTR_PLUS_ICEBP_C64 vcvttpd2dq, XMM8, YMM8
1269
1270;
1271;; cvtpd2ps
1272;
1273; SSE-128, fp32 <- fp64 (packed:2)
1274EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM2
1275EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, FSxBX
1276EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM9
1277EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, FSxBX
1278; AVX-128, fp32 <- fp64 (packed:2)
1279EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM2
1280EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_O
1281EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM9
1282EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_O
1283; AVX-256, fp32 <- fp64 (packed:4)
1284EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM2
1285EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, FSxBX_Y
1286EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM9
1287EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, FSxBX_Y
1288; SSE-128, fp32 <- fp64, same-reg (packed:2)
1289EMIT_INSTR_PLUS_ICEBP cvtpd2ps, XMM1, XMM1
1290EMIT_INSTR_PLUS_ICEBP_C64 cvtpd2ps, XMM8, XMM8
1291; AVX-128, fp32 <- fp64, same-reg (packed:2)
1292EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, XMM1
1293EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, XMM8
1294; AVX-256, fp32 <- fp64, same-reg (packed:4)
1295EMIT_INSTR_PLUS_ICEBP vcvtpd2ps, XMM1, YMM1
1296EMIT_INSTR_PLUS_ICEBP_C64 vcvtpd2ps, XMM8, YMM8
1297
1298;
1299;; cvtps2pd
1300;
1301; SSE-128, fp64 <- fp32 (packed:2)
1302EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM2
1303EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, FSxBX
1304EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM9
1305EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, FSxBX
1306; AVX-128, fp64 <- fp32 (packed:2)
1307EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM2
1308EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, FSxBX
1309EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM9
1310EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, FSxBX
1311; AVX-256, fp64 <- fp32 (packed:4)
1312EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM2
1313EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, FSxBX_O
1314EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM9
1315EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, FSxBX_O
1316; SSE-128, fp64 <- fp32, same-reg (packed:2)
1317EMIT_INSTR_PLUS_ICEBP cvtps2pd, XMM1, XMM1
1318EMIT_INSTR_PLUS_ICEBP_C64 cvtps2pd, XMM8, XMM8
1319; AVX-128, fp64 <- fp32, same-reg (packed:2)
1320EMIT_INSTR_PLUS_ICEBP vcvtps2pd, XMM1, XMM1
1321EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, XMM8, XMM8
1322; AVX-256, fp64 <- fp32, same-reg (packed:4)
1323EMIT_INSTR_PLUS_ICEBP vcvtps2pd, YMM1, XMM1
1324EMIT_INSTR_PLUS_ICEBP_C64 vcvtps2pd, YMM8, XMM8
1325
1326;
1327;; cvtsd2ss
1328;
1329; SSE-128, fp32 <- fp64 (single)
1330EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM2
1331EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, FSxBX
1332EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM9
1333EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, FSxBX
1334; AVX-128, fp32 <- fp64 (single)
1335EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, XMM3
1336EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM2, FSxBX
1337EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, XMM10
1338EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM9, FSxBX
1339; SSE-128, fp32 <- fp64, same-reg (single)
1340EMIT_INSTR_PLUS_ICEBP cvtsd2ss, XMM1, XMM1
1341EMIT_INSTR_PLUS_ICEBP_C64 cvtsd2ss, XMM8, XMM8
1342; AVX-128, fp32 <- fp64, same-reg (single)
1343EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, XMM1
1344EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM1, XMM8
1345EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM8, XMM8
1346EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM1, XMM8, XMM1
1347EMIT_INSTR_PLUS_ICEBP vcvtsd2ss, XMM1, XMM1, FSxBX
1348EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, XMM8
1349EMIT_INSTR_PLUS_ICEBP_C64 vcvtsd2ss, XMM8, XMM8, FSxBX
1350; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1351
1352;
1353;; cvtss2sd
1354;
1355; SSE-128, fp64 <- fp32 (single)
1356EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM2
1357EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, FSxBX
1358EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM9
1359EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, FSxBX
1360; AVX-128, fp64 <- fp32 (single)
1361EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, XMM3
1362EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM2, FSxBX
1363EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, XMM10
1364EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM9, FSxBX
1365; SSE-128, fp64 <- fp32, same-reg (single)
1366EMIT_INSTR_PLUS_ICEBP cvtss2sd, XMM1, XMM1
1367EMIT_INSTR_PLUS_ICEBP_C64 cvtss2sd, XMM8, XMM8
1368; AVX-128, fp64 <- fp32, same-reg (single)
1369EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, XMM1
1370EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM1, XMM8
1371EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM8, XMM8
1372EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM1, XMM8, XMM1
1373EMIT_INSTR_PLUS_ICEBP vcvtss2sd, XMM1, XMM1, FSxBX
1374EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, XMM8
1375EMIT_INSTR_PLUS_ICEBP_C64 vcvtss2sd, XMM8, XMM8, FSxBX
1376; @todo test with VEX.L=1 (as if asking for YMM)? SDM says 'unpredictable behavior'...
1377
1378%endif ; BS3_INSTANTIATING_CMN
1379
1380%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