102 lines
5 KiB
HTML
102 lines
5 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:x86="http://www.felixcloutier.com/x86"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="style.css"></link><title>MOVLHPS
|
||
— Move Packed Single Precision Floating-Point Values Low to High</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>MOVLHPS
|
||
— Move Packed Single Precision Floating-Point Values Low to High</h1>
|
||
|
||
<table>
|
||
<tr>
|
||
<th>Opcode/Instruction</th>
|
||
<th>Op / En</th>
|
||
<th>64/32 bit Mode Support</th>
|
||
<th>CPUID Feature Flag</th>
|
||
<th>Description</th></tr>
|
||
<tr>
|
||
<td>NP 0F 16 /r MOVLHPS xmm1, xmm2</td>
|
||
<td>RM</td>
|
||
<td>V/V</td>
|
||
<td>SSE</td>
|
||
<td>Move two packed single precision floating-point values from low quadword of xmm2 to high quadword of xmm1.</td></tr>
|
||
<tr>
|
||
<td>VEX.128.0F.WIG 16 /r VMOVLHPS xmm1, xmm2, xmm3</td>
|
||
<td>RVM</td>
|
||
<td>V/V</td>
|
||
<td>AVX</td>
|
||
<td>Merge two packed single precision floating-point values from low quadword of xmm3 and low quadword of xmm2.</td></tr>
|
||
<tr>
|
||
<td>EVEX.128.0F.W0 16 /r VMOVLHPS xmm1, xmm2, xmm3</td>
|
||
<td>RVM</td>
|
||
<td>V/V</td>
|
||
<td>AVX512F</td>
|
||
<td>Merge two packed single precision floating-point values from low quadword of xmm3 and low quadword of xmm2.</td></tr></table>
|
||
<h2 id="instruction-operand-encoding">Instruction Operand Encoding<sup>1</sup><a class="anchor" href="#instruction-operand-encoding">
|
||
¶
|
||
</a></h2>
|
||
<blockquote>
|
||
<p>1. ModRM.MOD = 011B required</p></blockquote>
|
||
<table>
|
||
<tr>
|
||
<th>Op/En</th>
|
||
<th>Operand 1</th>
|
||
<th>Operand 2</th>
|
||
<th>Operand 3</th>
|
||
<th>Operand 4</th></tr>
|
||
<tr>
|
||
<td>RM</td>
|
||
<td>ModRM:reg (w)</td>
|
||
<td>ModRM:r/m (r)</td>
|
||
<td>N/A</td>
|
||
<td>N/A</td></tr>
|
||
<tr>
|
||
<td>RVM</td>
|
||
<td>ModRM:reg (w)</td>
|
||
<td>VEX.vvvv (r) / EVEX.vvvv (r)</td>
|
||
<td>ModRM:r/m (r)</td>
|
||
<td>N/A</td></tr></table>
|
||
<h2 id="description">Description<a class="anchor" href="#description">
|
||
¶
|
||
</a></h2>
|
||
<p>This instruction cannot be used for memory to register moves.</p>
|
||
<p>128-bit two-argument form:</p>
|
||
<p>Moves two packed single precision floating-point values from the low quadword of the second XMM argument (second operand) to the high quadword of the first XMM register (first argument). The low quadword of the destination operand is left unchanged. Bits (MAXVL-1:128) of the corresponding destination register are unmodified.</p>
|
||
<p>128-bit three-argument forms:</p>
|
||
<p>Moves two packed single precision floating-point values from the low quadword of the third XMM argument (third operand) to the high quadword of the destination (first operand). Copies the low quadword from the second XMM argument (second operand) to the low quadword of the destination (first operand). Bits (MAXVL-1:128) of the corresponding destination register are zeroed.</p>
|
||
<p>If VMOVLHPS is encoded with VEX.L or EVEX.L’L= 1, an attempt to execute the instruction encoded with VEX.L or EVEX.L’L= 1 will cause an #UD exception.</p>
|
||
<h2 id="operation">Operation<a class="anchor" href="#operation">
|
||
¶
|
||
</a></h2>
|
||
<h3 id="movlhps--128-bit-two-argument-form-">MOVLHPS (128-bit Two-Argument Form)<a class="anchor" href="#movlhps--128-bit-two-argument-form-">
|
||
¶
|
||
</a></h3>
|
||
<pre>DEST[63:0] (Unmodified)
|
||
DEST[127:64] := SRC[63:0]
|
||
DEST[MAXVL-1:128] (Unmodified)
|
||
</pre>
|
||
<h3 id="vmovlhps--128-bit-three-argument-form---vex---evex-">VMOVLHPS (128-bit Three-Argument Form - VEX & EVEX)<a class="anchor" href="#vmovlhps--128-bit-three-argument-form---vex---evex-">
|
||
¶
|
||
</a></h3>
|
||
<pre>DEST[63:0] := SRC1[63:0]
|
||
DEST[127:64] := SRC2[63:0]
|
||
DEST[MAXVL-1:128] := 0
|
||
</pre>
|
||
<h2 id="intel-c-c++-compiler-intrinsic-equivalent">Intel C/C++ Compiler Intrinsic Equivalent<a class="anchor" href="#intel-c-c++-compiler-intrinsic-equivalent">
|
||
¶
|
||
</a></h2>
|
||
<pre>MOVLHPS __m128 _mm_movelh_ps(__m128 a, __m128 b)
|
||
</pre>
|
||
<h2 class="exceptions" id="simd-floating-point-exceptions">SIMD Floating-Point Exceptions<a class="anchor" href="#simd-floating-point-exceptions">
|
||
¶
|
||
</a></h2>
|
||
<p>None.</p>
|
||
<h2 class="exceptions" id="other-exceptions">Other Exceptions<a class="anchor" href="#other-exceptions">
|
||
¶
|
||
</a></h2>
|
||
<p>Non-EVEX-encoded instruction, see <span class="not-imported">Table 2-24</span>, “Type 7 Class Exception Conditions,” additionally:</p>
|
||
<table>
|
||
<tr>
|
||
<td>#UD</td>
|
||
<td>If VEX.L = 1.</td></tr></table>
|
||
<p>EVEX-encoded instruction, see Exceptions Type E7NM.128 in <span class="not-imported">Table 2-55</span>, “Type E7NM Class Exception Conditions.”</p><footer><p>
|
||
This UNOFFICIAL, mechanically-separated, non-verified reference is provided for convenience, but it may be
|
||
inc<span style="opacity: 0.2">omp</span>lete or b<sub>r</sub>oke<sub>n</sub> in various obvious or non-obvious
|
||
ways. Refer to <a href="https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-sdm-combined-volumes-1-2a-2b-2c-2d-3a-3b-3c-3d-and-4">Intel® 64 and IA-32 Architectures Software Developer’s Manual</a> for anything serious.
|
||
</p></footer></body></html>
|