ia32-64/x86/unpckhps.html
2025-07-08 02:23:29 -03:00

418 lines
37 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>UNPCKHPS
— Unpack and Interleave High Packed Single Precision Floating-Point Values</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>UNPCKHPS
— Unpack and Interleave High Packed Single Precision Floating-Point Values</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 15 /r UNPCKHPS xmm1, xmm2/m128</td>
<td>A</td>
<td>V/V</td>
<td>SSE</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of xmm1 and xmm2/m128.</td></tr>
<tr>
<td>VEX.128.0F.WIG 15 /r VUNPCKHPS xmm1, xmm2, xmm3/m128</td>
<td>B</td>
<td>V/V</td>
<td>AVX</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of xmm2 and xmm3/m128.</td></tr>
<tr>
<td>VEX.256.0F.WIG 15 /r VUNPCKHPS ymm1, ymm2, ymm3/m256</td>
<td>B</td>
<td>V/V</td>
<td>AVX</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of ymm2 and ymm3/m256.</td></tr>
<tr>
<td>EVEX.128.0F.W0 15 /r VUNPCKHPS xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst</td>
<td>C</td>
<td>V/V</td>
<td>AVX512VL AVX512F</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of xmm2 and xmm3/m128/m32bcst and write result to xmm1 subject to writemask k1.</td></tr>
<tr>
<td>EVEX.256.0F.W0 15 /r VUNPCKHPS ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst</td>
<td>C</td>
<td>V/V</td>
<td>AVX512VL AVX512F</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of ymm2 and ymm3/m256/m32bcst and write result to ymm1 subject to writemask k1.</td></tr>
<tr>
<td>EVEX.512.0F.W0 15 /r VUNPCKHPS zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst</td>
<td>C</td>
<td>V/V</td>
<td>AVX512F</td>
<td>Unpacks and Interleaves single precision floating-point values from high quadwords of zmm2 and zmm3/m512/m32bcst and write result to zmm1 subject to writemask k1.</td></tr></table>
<h2 id="instruction-operand-encoding">Instruction Operand Encoding<a class="anchor" href="#instruction-operand-encoding">
</a></h2>
<table>
<tr>
<th>Op/En</th>
<th>Tuple Type</th>
<th>Operand 1</th>
<th>Operand 2</th>
<th>Operand 3</th>
<th>Operand 4</th></tr>
<tr>
<td>A</td>
<td>N/A</td>
<td>ModRM:reg (r, w)</td>
<td>ModRM:r/m (r)</td>
<td>N/A</td>
<td>N/A</td></tr>
<tr>
<td>B</td>
<td>N/A</td>
<td>ModRM:reg (w)</td>
<td>VEX.vvvv (r)</td>
<td>ModRM:r/m (r)</td>
<td>N/A</td></tr>
<tr>
<td>C</td>
<td>Full</td>
<td>ModRM:reg (w)</td>
<td>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>Performs an interleaved unpack of the high single precision floating-point values from the first source operand and the second source operand.</p>
<p>128-bit Legacy SSE version: The second source can be an XMM register or an 128-bit memory location. The destination is not distinct from the first source XMM register and the upper bits (MAXVL-1:128) of the corresponding ZMM register destination are unmodified. When unpacking from a memory operand, an implementation may fetch only the appropriate 64 bits; however, alignment to 16-byte boundary and normal segment checking will still be enforced.</p>
<p>VEX.128 encoded version: The first source operand is a XMM register. The second source operand can be a XMM register or a 128-bit memory location. The destination operand is a XMM register. The upper bits (MAXVL-1:128) of the corresponding ZMM register destination are zeroed.</p>
<p>VEX.256 encoded version: The second source operand is an YMM register or an 256-bit memory location. The first source operand and destination operands are YMM registers.</p>
<figure id="fig-4-27">
<svg style="width: 475.77604799999995pt; height: 187.91997599999993pt" viewBox="101.24000000000001 0.0 401.48004 161.59997999999996">
<g xmlns="http://www.w3.org/2000/svg" style="stroke: none; fill: none">
<rect height="155.64000000000001" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="103.74000000000001" y="0.479979999999955"></rect>
<rect height="155.64000000000001" style="fill: rgb(0%, 0%, 0%)" width="0.48004" x="499.74" y="0.479979999999955"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="396.48" x="103.74000000000001" y="0.0"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="396.48" x="103.74000000000001" y="156.12"></rect>
<path d="M 423.36 91.73997999999995 L 426.0 88.31997999999999 L 426.42 87.83997999999997 L 426.78000000000003 88.31997999999999 L 436.08000000000004 100.85997999999995 L 437.16 102.29997999999989 L 435.48 101.63997999999992 L 421.02000000000004 95.93997999999999 L 420.36 95.69997999999998 L 420.78000000000003 95.1599799999999 L 421.32 94.97997999999995 L 435.84000000000003 100.67998 L 435.48 101.63997999999992 L 435.24 101.45997999999997 L 426.0 88.9199799999999 L 426.78000000000003 88.31997999999999 L 426.78000000000003 88.9199799999999 L 424.14 92.33997999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 420.78000000000003 95.1599799999999 L 423.36 91.73997999999995 L 424.14000000000004 92.33997999999985 L 421.56 95.75997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 423.72 92.0399799999999 L 426.36 88.61997999999994 L 435.66 101.1599799999999 L 421.14000000000004 95.45997999999986" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 366.84000000000003 47.45997999999997 L 365.64000000000004 49.01997999999992 L 422.76000000000005 92.51997999999992 L 423.96000000000004 90.95997999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 390.18 92.63997999999992 L 390.3 92.45997999999997 L 390.36 92.27997999999991 C 390.488 91.26797999999997 389.47700000000003 90.72197999999992 388.68 91.31997999999987L 388.44 91.67997999999989 C 388.123 92.60897999999997 388.986 93.38397999999995 389.88 92.93997999999988L 390.06 92.81997999999987 L 390.18 92.63997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 389.40000000000003 92.0399799999999 L 391.92 88.55997999999988 L 392.34000000000003 88.07997999999986 L 392.70000000000005 88.55997999999988 L 402.3 100.85997999999995 L 403.38000000000005 102.23997999999995 L 401.76000000000005 101.63997999999992 L 387.12000000000006 96.29997999999989 L 386.46000000000004 96.05997999999988 L 386.88000000000005 95.51997999999992 L 387.42 95.33997999999985 L 402.06000000000006 100.67997999999989 L 401.76000000000005 101.63997999999992 L 401.52000000000004 101.45997999999986 L 391.92 89.1599799999999 L 392.70000000000005 88.55997999999988 L 392.70000000000005 89.1599799999999 L 390.18 92.63997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 386.88 95.51997999999992 L 389.4 92.0399799999999 L 390.18 92.63997999999992 L 387.65999999999997 96.11997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 389.76 92.33997999999985 L 392.28 88.85997999999984 L 401.88 101.1599799999999 L 387.24 95.81997999999987" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 366.84000000000003 74.45997999999997 L 365.70000000000005 76.07997999999998 L 388.8 92.87997999999993 L 389.94000000000005 91.25997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="420.24" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.24" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="457.14" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.0" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="383.1" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="383.1" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="382.86" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="345.96" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.96" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.72" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="308.88" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.88" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.64" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="420.24" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.24" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="457.14" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.0" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="383.1" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="383.1" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="382.86" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="345.96" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.96" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.72" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="308.88" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.88" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.64" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="420.24" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.24" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="457.14" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="420.0" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="101.99997999999994"></rect>
<rect height="0.53998" style="fill: rgb(0%, 0%, 0%)" width="4.2" x="439.68" y="111.29999999999995"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="383.1" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="383.1" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="420.0" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="382.86" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="345.96" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.96" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="382.86" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="345.72" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="308.88" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.88" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="345.72" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="308.64" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="271.74" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.74" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.5" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="234.60000000000002" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.60000000000002" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.36" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="197.46" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.46" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.22" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="160.38" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.38" y="102.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="102.23997999999995"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.14000000000001" y="115.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="160.14000000000001" y="101.99997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="271.74" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.74" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.5" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="234.60000000000002" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.60000000000002" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.36" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="197.46" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.46" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.22" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="160.38" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.38" y="34.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="34.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.14000000000001" y="48.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="160.14000000000001" y="34.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="271.74" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.74" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="308.64" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="271.5" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="234.60000000000002" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.60000000000002" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="271.5" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="234.36" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.14" x="197.46" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.46" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="234.36" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.38" x="197.22" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="61.49997999999994"></rect>
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="37.08" x="160.38" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.38" y="61.5"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="197.22" y="61.739979999999946"></rect>
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="37.32" x="160.14000000000001" y="75.0"></rect>
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="160.14000000000001" y="61.49997999999994"></rect>
<path d="M 354.24 88.43997999999988 L 354.36 88.31997999999987 L 354.48 88.13997999999992 C 355.048 87.39397999999983 354.257 86.2419799999999 353.34000000000003 86.63997999999992L 353.16 86.69997999999987 L 352.98 86.87997999999993 C 352.286 87.63097999999991 352.961 88.69897999999989 353.82 88.55997999999988L 354.06 88.49997999999982 L 354.24 88.43997999999988" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 353.70000000000005 87.59997999999996 L 357.36000000000007 85.31997999999999 L 357.90000000000003 84.95997999999997 L 358.08000000000004 85.61997999999994 L 362.40000000000003 100.55998 L 362.88000000000005 102.23997999999995 L 361.62000000000006 101.09997999999996 L 350.04 90.71997999999996 L 349.50000000000006 90.23997999999995 L 350.1 89.87997999999993 L 350.70000000000005 89.93997999999999 L 362.28000000000003 100.31997999999999 L 361.62000000000006 101.09997999999996 L 361.44000000000005 100.79998 L 357.12000000000006 85.91998000000001 L 358.08000000000004 85.61997999999994 L 357.90000000000003 86.21997999999996 L 354.24000000000007 88.49997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 350.1 89.87997999999993 L 353.70000000000005 87.59997999999996 L 354.24 88.49997999999994 L 350.64000000000004 90.77997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 353.94 88.01997999999992 L 357.6 85.73997999999995 L 361.92 100.67997999999989 L 350.34 90.29997999999989" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 329.94 47.75997999999993 L 328.26 48.77997999999991 L 352.86 88.13997999999992 L 354.54 87.11997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 329.1 85.9199799999999 L 329.34000000000003 85.9199799999999 L 329.52000000000004 85.85997999999995 C 330.32500000000005 85.51897999999994 330.341 84.26497999999992 329.34000000000003 83.93997999999988L 328.92 83.93997999999988 C 327.925 84.1409799999999 327.82300000000004 85.57697999999993 328.74 85.85997999999995L 328.92 85.9199799999999 L 329.1 85.9199799999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 329.1 84.95997999999997 L 334.08000000000004 84.95997999999997 L 333.90000000000003 85.61997999999994 L 329.58000000000004 100.61997999999994 L 329.1 102.29998 L 328.62 100.61997999999994 L 324.36 85.61997999999994 L 324.18 84.95997999999997 L 324.84000000000003 84.95997999999997 L 325.32000000000005 85.31997999999999 L 329.58000000000004 100.31997999999999 L 328.62 100.61997999999994 L 328.62 100.31997999999999 L 332.94 85.31997999999999 L 333.90000000000003 85.61997999999994 L 333.42 85.97997999999995 L 329.1 85.97997999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="4.26" x="324.84000000000003" y="84.95997999999997"></rect>
<path d="M 329.1 85.43997999999988 L 333.42 85.43997999999988 L 329.1 100.43997999999988 L 324.84000000000003 85.43997999999988" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<rect height="9.72" style="fill: rgb(0%, 0%, 0%)" width="1.98" x="328.14" y="75.23997999999995"></rect>
<path d="M 275.64 92.33997999999985 L 275.76 92.21997999999985 L 275.82 91.97997999999984 L 275.82 91.43997999999988 L 275.58 91.07997999999986 L 275.46 90.95997999999986 L 275.28 90.83997999999985 C 274.974 90.70897999999988 274.61899999999997 90.78597999999988 274.32 90.8999799999998L 274.2 91.0199799999998 L 274.02 91.13997999999981 L 273.96 91.31997999999987 C 273.46299999999997 92.2989799999998 274.561 93.0349799999999 275.34 92.63997999999981L 275.52 92.5199799999998 L 275.64 92.33997999999985" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 274.86 91.73997999999995 L 277.5 88.31997999999999 L 277.92 87.83997999999997 L 278.28000000000003 88.31997999999999 L 287.58000000000004 100.85997999999995 L 288.66 102.29997999999989 L 286.98 101.63997999999992 L 272.52000000000004 95.93997999999999 L 271.86 95.69997999999998 L 272.28000000000003 95.1599799999999 L 272.82 94.97997999999995 L 287.34000000000003 100.67998 L 286.98 101.63997999999992 L 286.74 101.45997999999997 L 277.5 88.9199799999999 L 278.28000000000003 88.31997999999999 L 278.28000000000003 88.9199799999999 L 275.64 92.33997999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 272.28000000000003 95.1599799999999 L 274.86 91.73997999999995 L 275.64000000000004 92.33997999999985 L 273.06 95.75997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 275.22 92.0399799999999 L 277.86 88.61997999999994 L 287.16 101.1599799999999 L 272.64000000000004 95.45997999999986" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 218.34 47.45997999999997 L 217.14000000000001 49.01997999999992 L 274.26 92.51997999999992 L 275.46000000000004 90.95997999999997" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 241.68 92.63997999999992 L 241.8 92.45997999999997 L 241.86 92.27997999999991 C 241.988 91.26797999999997 240.977 90.72197999999992 240.18 91.31997999999987L 239.94 91.67997999999989 C 239.637 92.61897999999997 240.461 93.38797999999997 241.38 92.93997999999988L 241.56 92.81997999999987 L 241.68 92.63997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 240.9 92.0399799999999 L 243.42000000000002 88.55997999999988 L 243.84 88.07997999999986 L 244.20000000000002 88.55997999999988 L 253.8 100.85997999999995 L 254.88 102.23997999999995 L 253.26 101.63997999999992 L 238.62 96.29997999999989 L 237.96 96.05997999999988 L 238.38 95.51997999999992 L 238.92000000000002 95.33997999999985 L 253.56 100.67997999999989 L 253.26 101.63997999999992 L 253.02 101.45997999999986 L 243.42000000000002 89.1599799999999 L 244.20000000000002 88.55997999999988 L 244.20000000000002 89.1599799999999 L 241.68 92.63997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 238.38 95.51997999999992 L 240.9 92.0399799999999 L 241.68 92.63997999999992 L 239.16 96.11997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 241.26 92.33997999999985 L 243.78 88.85997999999984 L 253.38 101.1599799999999 L 238.73999999999998 95.81997999999987" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 218.34 74.45997999999997 L 217.20000000000002 76.07997999999998 L 240.3 92.87997999999993 L 241.44 91.25997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 205.74 88.43997999999988 L 205.86 88.31997999999987 L 205.98000000000002 88.13997999999992 C 206.54600000000002 87.38497999999993 205.764 86.25697999999988 204.84 86.63997999999992L 204.66 86.69997999999987 L 204.36 86.99997999999982 L 204.3 87.17997999999989 L 204.18 87.35997999999984 L 204.18 87.71997999999985 L 204.24 87.89997999999991 L 204.48000000000002 88.25997999999993 L 204.60000000000002 88.37997999999993 L 204.78 88.49997999999982 L 204.96 88.55997999999988 L 205.32000000000002 88.55997999999988 L 205.56 88.49997999999982 L 205.74 88.43997999999988" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 205.20000000000002 87.59997999999996 L 208.86 85.31997999999999 L 209.4 84.95997999999997 L 209.58 85.61997999999994 L 213.9 100.55998 L 214.38000000000002 102.17998 L 213.12 101.09997999999996 L 201.48000000000002 90.71997999999996 L 200.94000000000003 90.23997999999995 L 201.54000000000002 89.87997999999993 L 202.14000000000001 89.93997999999999 L 213.78000000000003 100.31997999999999 L 213.12 101.09997999999996 L 212.94000000000003 100.79998 L 208.62 85.91998000000001 L 209.58 85.61997999999994 L 209.4 86.21997999999996 L 205.74 88.49997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 201.54 89.87997999999993 L 205.2 87.59997999999996 L 205.73999999999998 88.49997999999994 L 202.07999999999998 90.77997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 205.44 88.01997999999992 L 209.1 85.73997999999995 L 213.42 100.67997999999989 L 201.78 90.29997999999989" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 181.44 47.75997999999993 L 179.76 48.77997999999991 L 204.36 88.13997999999992 L 206.04 87.11997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<path d="M 180.60000000000002 85.9199799999999 L 180.78000000000003 85.9199799999999 L 181.02 85.85997999999995 C 181.88200000000003 85.47097999999994 181.73900000000003 84.12697999999989 180.78000000000003 83.93997999999988L 180.42000000000002 83.93997999999988 C 179.425 84.1409799999999 179.32300000000004 85.57697999999993 180.24 85.85997999999995L 180.42000000000002 85.9199799999999 L 180.60000000000002 85.9199799999999" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<path d="M 180.60000000000002 84.95997999999997 L 185.58 84.95997999999997 L 185.40000000000003 85.61997999999994 L 181.08 100.61997999999994 L 180.60000000000002 102.29998 L 180.12000000000003 100.61997999999994 L 175.8 85.61997999999994 L 175.62000000000003 84.95997999999997 L 176.28000000000003 84.95997999999997 L 176.76000000000002 85.31997999999999 L 181.08 100.31997999999999 L 180.12000000000003 100.61997999999994 L 180.12000000000003 100.31997999999999 L 184.44000000000003 85.31997999999999 L 185.40000000000003 85.61997999999994 L 184.92000000000002 85.97997999999995 L 180.60000000000002 85.97997999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="4.32" x="176.28" y="84.95997999999997"></rect>
<path d="M 180.60000000000002 85.43997999999988 L 184.92000000000002 85.43997999999988 L 180.60000000000002 100.43997999999988 L 176.28000000000003 85.43997999999988" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
<rect height="9.72" style="fill: rgb(0%, 0%, 0%)" width="1.98" x="179.64000000000001" y="75.23997999999995"></rect>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="269.0924851" x="174.84" y="44.85087779999992">X7 X6 X5 X4 X3 X2 X1 X0</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414452500000039pt; fill: #000" textLength="303.8324851" x="140.1" y="71.85087779999992">SRC2 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0</text>
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="303.77216670000007" x="140.1" y="112.35087779999992">DEST Y7 X7 Y6 X6 Y3 X3 Y2 X2</text></g></svg>
<figcaption><a href='unpckhps.html#fig-4-27'>Figure 4-27</a>. VUNPCKHPS Operation</figcaption></figure>
<p>EVEX.512 encoded version: The first source operand is a ZMM register. The second source operand is a ZMM register, a 512-bit memory location, or a 512-bit vector broadcasted from a 32-bit memory location. The destination operand is a ZMM register, conditionally updated using writemask k1.</p>
<p>EVEX.256 encoded version: The first source operand is a YMM register. The second source operand is a YMM register, a 256-bit memory location, or a 256-bit vector broadcasted from a 32-bit memory location. The destination operand is a YMM register, conditionally updated using writemask k1.</p>
<p>EVEX.128 encoded version: The first source operand is a XMM register. The second source operand is a XMM register, a 128-bit memory location, or a 128-bit vector broadcasted from a 32-bit memory location. The destination operand is a XMM register, conditionally updated using writemask k1.</p>
<h2 id="operation">Operation<a class="anchor" href="#operation">
</a></h2>
<h3 id="vunpckhps--evex-encoded-version-when-src2-is-a-register-">VUNPCKHPS (EVEX Encoded Version When SRC2 is a Register)<a class="anchor" href="#vunpckhps--evex-encoded-version-when-src2-is-a-register-">
</a></h3>
<pre>(KL, VL) = (4, 128), (8, 256), (16, 512)
IF VL &gt;= 128
TMP_DEST[31:0] := SRC1[95:64]
TMP_DEST[63:32] := SRC2[95:64]
TMP_DEST[95:64] := SRC1[127:96]
TMP_DEST[127:96] := SRC2[127:96]
FI;
IF VL &gt;= 256
TMP_DEST[159:128] := SRC1[223:192]
TMP_DEST[191:160] := SRC2[223:192]
TMP_DEST[223:192] := SRC1[255:224]
TMP_DEST[255:224] := SRC2[255:224]
FI;
IF VL &gt;= 512
TMP_DEST[287:256] := SRC1[351:320]
TMP_DEST[319:288] := SRC2[351:320]
TMP_DEST[351:320] := SRC1[383:352]
TMP_DEST[383:352] := SRC2[383:352]
TMP_DEST[415:384] := SRC1[479:448]
TMP_DEST[447:416] := SRC2[479:448]
TMP_DEST[479:448] := SRC1[511:480]
TMP_DEST[511:480] := SRC2[511:480]
FI;
FOR j := 0 TO KL-1
i := j * 32
IF k1[j] OR *no writemask*
THEN DEST[i+31:i] := TMP_DEST[i+31:i]
ELSE
IF *merging-masking*
; merging-masking
THEN *DEST[i+31:i] remains unchanged*
ELSE *zeroing-masking*
; zeroing-masking
DEST[i+31:i] := 0
FI
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0
</pre>
<h3 id="vunpckhps--evex-encoded-version-when-src2-is-memory-">VUNPCKHPS (EVEX Encoded Version When SRC2 is Memory)<a class="anchor" href="#vunpckhps--evex-encoded-version-when-src2-is-memory-">
</a></h3>
<pre>(KL, VL) = (4, 128), (8, 256), (16, 512)
FOR j := 0 TO KL-1
i := j * 32
IF (EVEX.b = 1)
THEN TMP_SRC2[i+31:i] := SRC2[31:0]
ELSE TMP_SRC2[i+31:i] := SRC2[i+31:i]
FI;
ENDFOR;
IF VL &gt;= 128
TMP_DEST[31:0] := SRC1[95:64]
TMP_DEST[63:32] := TMP_SRC2[95:64]
TMP_DEST[95:64] := SRC1[127:96]
TMP_DEST[127:96] := TMP_SRC2[127:96]
FI;
IF VL &gt;= 256
TMP_DEST[159:128] := SRC1[223:192]
TMP_DEST[191:160] := TMP_SRC2[223:192]
TMP_DEST[223:192] := SRC1[255:224]
TMP_DEST[255:224] := TMP_SRC2[255:224]
FI;
IF VL &gt;= 512
TMP_DEST[287:256] := SRC1[351:320]
TMP_DEST[319:288] := TMP_SRC2[351:320]
TMP_DEST[351:320] := SRC1[383:352]
TMP_DEST[383:352] := TMP_SRC2[383:352]
TMP_DEST[415:384] := SRC1[479:448]
TMP_DEST[447:416] := TMP_SRC2[479:448]
TMP_DEST[479:448] := SRC1[511:480]
TMP_DEST[511:480] := TMP_SRC2[511:480]
FI;
FOR j := 0 TO KL-1
i := j * 32
IF k1[j] OR *no writemask*
THEN DEST[i+31:i] := TMP_DEST[i+31:i]
ELSE
IF *merging-masking*
THEN *DEST[i+31:i] remains unchanged*
ELSE *zeroing-masking* ; zeroing-masking
DEST[i+31:i] := 0
FI;
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0
</pre>
<h3 id="vunpckhps--vex-256-encoded-version-">VUNPCKHPS (VEX.256 Encoded Version)<a class="anchor" href="#vunpckhps--vex-256-encoded-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[95:64]
DEST[63:32] := SRC2[95:64]
DEST[95:64] := SRC1[127:96]
DEST[127:96] := SRC2[127:96]
DEST[159:128] := SRC1[223:192]
DEST[191:160] := SRC2[223:192]
DEST[223:192] := SRC1[255:224]
DEST[255:224] := SRC2[255:224]
DEST[MAXVL-1:256] := 0
</pre>
<h3 id="vunpckhps--vex-128-encoded-version-">VUNPCKHPS (VEX.128 Encoded Version)<a class="anchor" href="#vunpckhps--vex-128-encoded-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[95:64]
DEST[63:32] := SRC2[95:64]
DEST[95:64] := SRC1[127:96]
DEST[127:96] := SRC2[127:96]
DEST[MAXVL-1:128] := 0
</pre>
<h3 id="unpckhps--128-bit-legacy-sse-version-">UNPCKHPS (128-bit Legacy SSE Version)<a class="anchor" href="#unpckhps--128-bit-legacy-sse-version-">
</a></h3>
<pre>DEST[31:0] := SRC1[95:64]
DEST[63:32] := SRC2[95:64]
DEST[95:64] := SRC1[127:96]
DEST[127:96] := SRC2[127:96]
DEST[MAXVL-1:128] (Unmodified)
</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>VUNPCKHPS __m512 _mm512_unpackhi_ps( __m512 a, __m512 b);
</pre>
<pre>VUNPCKHPS __m512 _mm512_mask_unpackhi_ps(__m512 s, __mmask16 k, __m512 a, __m512 b);
</pre>
<pre>VUNPCKHPS __m512 _mm512_maskz_unpackhi_ps(__mmask16 k, __m512 a, __m512 b);
</pre>
<pre>VUNPCKHPS __m256 _mm256_unpackhi_ps (__m256 a, __m256 b);
</pre>
<pre>VUNPCKHPS __m256 _mm256_mask_unpackhi_ps(__m256 s, __mmask8 k, __m256 a, __m256 b);
</pre>
<pre>VUNPCKHPS __m256 _mm256_maskz_unpackhi_ps(__mmask8 k, __m256 a, __m256 b);
</pre>
<pre>UNPCKHPS __m128 _mm_unpackhi_ps (__m128 a, __m128 b);
</pre>
<pre>VUNPCKHPS __m128 _mm_mask_unpackhi_ps(__m128 s, __mmask8 k, __m128 a, __m128 b);
</pre>
<pre>VUNPCKHPS __m128 _mm_maskz_unpackhi_ps(__mmask8 k, __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 instructions, see <span class="not-imported">Table 2-21</span>, “Type 4 Class Exception Conditions.”</p>
<p>EVEX-encoded instructions, see <span class="not-imported">Table 2-50</span>, “Type E4NF 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 Developers Manual</a> for anything serious.
</p></footer></body></html>