forked from NRZCode/ia32-64
470 lines
36 KiB
HTML
470 lines
36 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>VPERMILPD
|
||
— Permute In-Lane of Pairs of Double 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>VPERMILPD
|
||
— Permute In-Lane of Pairs of Double 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>VEX.128.66.0F38.W0 0D /r VPERMILPD xmm1, xmm2, xmm3/m128</td>
|
||
<td>A</td>
|
||
<td>V/V</td>
|
||
<td>AVX</td>
|
||
<td>Permute double precision floating-point values in xmm2 using controls from xmm3/m128 and store result in xmm1.</td></tr>
|
||
<tr>
|
||
<td>VEX.256.66.0F38.W0 0D /r VPERMILPD ymm1, ymm2, ymm3/m256</td>
|
||
<td>A</td>
|
||
<td>V/V</td>
|
||
<td>AVX</td>
|
||
<td>Permute double precision floating-point values in ymm2 using controls from ymm3/m256 and store result in ymm1.</td></tr>
|
||
<tr>
|
||
<td>EVEX.128.66.0F38.W1 0D /r VPERMILPD xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst</td>
|
||
<td>C</td>
|
||
<td>V/V</td>
|
||
<td>AVX512VL AVX512F</td>
|
||
<td>Permute double precision floating-point values in xmm2 using control from xmm3/m128/m64bcst and store the result in xmm1 using writemask k1.</td></tr>
|
||
<tr>
|
||
<td>EVEX.256.66.0F38.W1 0D /r VPERMILPD ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst</td>
|
||
<td>C</td>
|
||
<td>V/V</td>
|
||
<td>AVX512VL AVX512F</td>
|
||
<td>Permute double precision floating-point values in ymm2 using control from ymm3/m256/m64bcst and store the result in ymm1 using writemask k1.</td></tr>
|
||
<tr>
|
||
<td>EVEX.512.66.0F38.W1 0D /r VPERMILPD zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst</td>
|
||
<td>C</td>
|
||
<td>V/V</td>
|
||
<td>AVX512F</td>
|
||
<td>Permute double precision floating-point values in zmm2 using control from zmm3/m512/m64bcst and store the result in zmm1 using writemask k1.</td></tr>
|
||
<tr>
|
||
<td>VEX.128.66.0F3A.W0 05 /r ib VPERMILPD xmm1, xmm2/m128, imm8</td>
|
||
<td>B</td>
|
||
<td>V/V</td>
|
||
<td>AVX</td>
|
||
<td>Permute double precision floating-point values in xmm2/m128 using controls from imm8.</td></tr>
|
||
<tr>
|
||
<td>VEX.256.66.0F3A.W0 05 /r ib VPERMILPD ymm1, ymm2/m256, imm8</td>
|
||
<td>B</td>
|
||
<td>V/V</td>
|
||
<td>AVX</td>
|
||
<td>Permute double precision floating-point values in ymm2/m256 using controls from imm8.</td></tr>
|
||
<tr>
|
||
<td>EVEX.128.66.0F3A.W1 05 /r ib VPERMILPD xmm1 {k1}{z}, xmm2/m128/m64bcst, imm8</td>
|
||
<td>D</td>
|
||
<td>V/V</td>
|
||
<td>AVX512VL AVX512F</td>
|
||
<td>Permute double precision floating-point values in xmm2/m128/m64bcst using controls from imm8 and store the result in xmm1 using writemask k1.</td></tr>
|
||
<tr>
|
||
<td>EVEX.256.66.0F3A.W1 05 /r ib VPERMILPD ymm1 {k1}{z}, ymm2/m256/m64bcst, imm8</td>
|
||
<td>D</td>
|
||
<td>V/V</td>
|
||
<td>AVX512VL AVX512F</td>
|
||
<td>Permute double precision floating-point values in ymm2/m256/m64bcst using controls from imm8 and store the result in ymm1 using writemask k1.</td></tr>
|
||
<tr>
|
||
<td>EVEX.512.66.0F3A.W1 05 /r ib VPERMILPD zmm1 {k1}{z}, zmm2/m512/m64bcst, imm8</td>
|
||
<td>D</td>
|
||
<td>V/V</td>
|
||
<td>AVX512F</td>
|
||
<td>Permute double precision floating-point values in zmm2/m512/m64bcst using controls from imm8 and store the result in zmm1 using 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 (w)</td>
|
||
<td>VEX.vvvv (r)</td>
|
||
<td>ModRM:r/m (r)</td>
|
||
<td>N/A</td></tr>
|
||
<tr>
|
||
<td>B</td>
|
||
<td>N/A</td>
|
||
<td>ModRM:reg (w)</td>
|
||
<td>ModRM:r/m (r)</td>
|
||
<td>N/A</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>
|
||
<tr>
|
||
<td>D</td>
|
||
<td>Full</td>
|
||
<td>ModRM:reg (w)</td>
|
||
<td>ModRM:r/m (r)</td>
|
||
<td>N/A</td>
|
||
<td>N/A</td></tr></table>
|
||
<h3 id="description">Description<a class="anchor" href="#description">
|
||
¶
|
||
</a></h3>
|
||
<p>(variable control version)</p>
|
||
<p>Permute pairs of double precision floating-point values in the first source operand (second operand), each using a 1-bit control field residing in the corresponding quadword element of the second source operand (third operand). Permuted results are stored in the destination operand (first operand).</p>
|
||
<p>The control bits are located at bit 0 of each quadword element (see <a href='vpermilpd.html#fig-5-24'>Figure 5-24</a>). Each control determines which of the source element in an input pair is selected for the destination element. Each pair of source elements must lie in the same 128-bit region as the destination.</p>
|
||
<p>EVEX version: The second source operand (third operand) is a ZMM/YMM/XMM register, a 512/256/128-bit memory location or a 512/256/128-bit vector broadcasted from a 64-bit memory location. Permuted results are written to the destination under the writemask.</p>
|
||
<figure id="fig-5-23">
|
||
<svg style="width: 574.9920000000001pt; height: 141.33597599999987pt" viewBox="59.900000000000006 0.0 484.1600000000001 122.77997999999991">
|
||
<g xmlns="http://www.w3.org/2000/svg" style="fill: none; stroke: none">
|
||
<rect height="116.82000000000001" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="62.400000000000006" y="0.479979999999955"></rect>
|
||
<rect height="116.82000000000001" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="541.08" y="0.479979999999955"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="479.16" x="62.400000000000006" y="0.0"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="479.16" x="62.400000000000006" y="117.29996999999992"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="165.54" y="89.99999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="239.52" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="165.3" y="103.49999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="165.3" y="89.99997999999994"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.28" x="239.76" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="239.76" y="89.99999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.8" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="239.52" y="103.49999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="239.52" y="89.99997999999994"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.22" x="314.04" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="314.04" y="89.99999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="388.02" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="313.8" y="103.49999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.8" y="89.99997999999994"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.28" x="388.26" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="388.26" y="89.99999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="462.3" y="90.23997999999995"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="388.02" y="103.49999999999994"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="388.02" y="89.99997999999994"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.22" x="165.54" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="165.54" y="22.5"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="239.52" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="165.3" y="36.0"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="165.3" y="22.499979999999937"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.28" x="239.76" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="239.76" y="22.5"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.8" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="239.52" y="36.0"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="239.52" y="22.499979999999937"></rect>
|
||
<path d="M 363.18 76.43997999999993 L 363.54 76.55997999999994 C 364.55 76.71297999999996 365.06600000000003 75.44697999999994 364.38 74.87997999999993L 364.02 74.63997999999992 C 363.13800000000003 74.26497999999992 362.296 75.40997999999996 362.88 76.13997999999992L 363.0 76.31997999999993 L 363.18 76.43997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 363.66 75.59997999999996 L 367.32000000000005 77.87997999999993 L 367.86 78.29997999999995 L 367.38000000000005 78.71997999999996 L 355.8 89.15997999999996 L 354.54 90.29997999999995 L 355.02000000000004 88.61997999999994 L 359.28000000000003 73.61997999999994 L 359.46000000000004 72.95997999999997 L 360.0 73.31997999999999 L 360.24 73.91997999999995 L 355.98 88.85997999999995 L 355.02000000000004 88.61997999999994 L 355.14000000000004 88.37997999999993 L 366.72 77.93997999999993 L 367.38000000000005 78.71997999999996 L 366.78000000000003 78.77997999999997 L 363.12 76.49997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 360.0 73.31997999999993 L 363.66 75.5999799999999 L 363.12 76.49997999999994 L 359.46 74.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 363.42 76.01997999999992 L 367.08000000000004 78.29997999999989 L 355.5 88.73997999999995 L 359.76 73.73997999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 389.1 36.77997999999991 L 387.42 35.75997999999993 L 362.88 75.11997999999994 L 364.56 76.13997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 270.48 77.21997999999991 L 270.66 77.0999799999999 L 270.78000000000003 76.9199799999999 C 271.195 75.99497999999988 270.425 75.15497999999991 269.46000000000004 75.4799799999999L 269.28000000000003 75.5999799999999 L 269.16 75.71997999999991 C 268.509 76.46197999999993 269.13800000000003 77.5569799999999 270.12 77.39997999999991L 270.3 77.33997999999991 L 270.48 77.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 269.88 76.43997999999993 L 273.36 73.85997999999995 L 273.96 73.49997999999994 L 274.14 74.09997999999996 L 279.65999999999997 88.67997999999994 L 280.32 90.29997999999995 L 278.88 89.21997999999996 L 266.46 79.79997999999995 L 265.92 79.37997999999993 L 266.46 79.01997999999992 L 267.06 79.01997999999992 L 279.48 88.43997999999993 L 278.88 89.21997999999996 L 278.7 88.97997999999995 L 273.18 74.39997999999991 L 274.14 74.09997999999996 L 273.96 74.63997999999992 L 270.48 77.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 266.46 79.01997999999992 L 269.88 76.43997999999993 L 270.47999999999996 77.21997999999991 L 267.06 79.79997999999989" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 270.18 76.79997999999995 L 273.66 74.21997999999996 L 279.18 88.79997999999995 L 266.76 79.37997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 240.54 35.63997999999992 L 238.98 36.83997999999997 L 269.1 76.97997999999995 L 270.65999999999997 75.77997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.22" x="314.04" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="314.04" y="22.5"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="388.02" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.46000000000001" x="313.8" y="36.0"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="313.8" y="22.499979999999937"></rect>
|
||
<rect height="13.5" style="fill: rgb(100%, 100%, 100%)" width="74.28" x="388.26" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="388.26" y="22.5"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="462.3" y="22.739979999999946"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="74.52" x="388.02" y="36.0"></rect>
|
||
<rect height="13.74" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="388.02" y="22.499979999999937"></rect>
|
||
<path d="M 418.98 77.21997999999991 L 419.16 77.0999799999999 L 419.28000000000003 76.9199799999999 C 419.695 75.99497999999988 418.925 75.15497999999991 417.96000000000004 75.4799799999999L 417.78000000000003 75.5999799999999 L 417.66 75.71997999999991 C 417.053 76.53797999999989 417.59900000000005 77.51797999999991 418.62 77.39997999999991L 418.8 77.33997999999991 L 418.98 77.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 418.38 76.43997999999993 L 421.86 73.85997999999995 L 422.46 73.49997999999994 L 422.64 74.09997999999996 L 428.15999999999997 88.67997999999994 L 428.82 90.29997999999995 L 427.38 89.21997999999996 L 414.96 79.79997999999995 L 414.42 79.37997999999993 L 414.96 79.01997999999992 L 415.56 79.01997999999992 L 427.98 88.43997999999993 L 427.38 89.21997999999996 L 427.2 88.97997999999995 L 421.68 74.39997999999991 L 422.64 74.09997999999996 L 422.46 74.63997999999992 L 418.98 77.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 414.96000000000004 79.01997999999992 L 418.38000000000005 76.43997999999993 L 418.98 77.21997999999991 L 415.56000000000006 79.79997999999989" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 418.68 76.79997999999995 L 422.16 74.21997999999996 L 427.68 88.79997999999995 L 415.26 79.37997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 389.04 35.63997999999992 L 387.48 36.83997999999997 L 417.6 76.97997999999995 L 419.16 75.77997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 214.68 76.43997999999993 L 215.04000000000002 76.55997999999994 C 216.05 76.71297999999996 216.566 75.44697999999994 215.88 74.87997999999993L 215.52 74.63997999999992 C 214.56 74.27197999999993 213.822 75.42097999999993 214.38 76.13997999999992L 214.5 76.31997999999993 L 214.68 76.43997999999993" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 215.16 75.59997999999996 L 218.82 77.87997999999993 L 219.35999999999999 78.29997999999995 L 218.88 78.71997999999996 L 207.29999999999998 89.15997999999996 L 206.04 90.29997999999995 L 206.51999999999998 88.61997999999994 L 210.78 73.61997999999994 L 210.96 72.95997999999997 L 211.5 73.31997999999999 L 211.74 73.91997999999995 L 207.48 88.85997999999995 L 206.51999999999998 88.61997999999994 L 206.64 88.37997999999993 L 218.22 77.93997999999993 L 218.88 78.71997999999996 L 218.28 78.77997999999997 L 214.62 76.49997999999994" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 211.5 73.31997999999993 L 215.16 75.5999799999999 L 214.62 76.49997999999994 L 210.96 74.21997999999991" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<path d="M 214.92000000000002 76.01997999999992 L 218.58 78.29997999999989 L 207.00000000000003 88.73997999999995 L 211.26000000000002 73.73997999999995" style="fill: rgb(0%, 0%, 0%); fill-rule: evenodd"></path>
|
||
<path d="M 240.60000000000002 36.77997999999991 L 238.92000000000002 35.75997999999993 L 214.38000000000002 75.11997999999994 L 216.06000000000003 76.13997999999992" style="fill: rgb(0%, 0%, 0%); fill-rule: nonzero"></path>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="9.17216670000002" x="201.36" y="32.85087779999992">X3</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="9.232485099999963" x="275.64" y="32.85087779999992">X2</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="9.172166699999991" x="349.86" y="32.85087779999992">X1</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="9.172166699999991" x="424.14" y="32.85087779999992">X0</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="20.0294787" x="145.50079005999996" y="34.47118081999997">SRC1</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="20.024954820000005" x="145.26164749999992" y="100.35087779999992">DEST</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="22.553803740000035" x="200.22" y="100.35087779999992">X2..X3</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="22.493485340000063" x="274.5" y="100.35087779999992">X2..X3</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="22.492731359999937" x="349.86" y="100.35087779999992">X0..X1</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 8.414416800000026pt; fill: #000" textLength="22.493485340000063" x="424.14" y="100.35087779999992">X0..X1</text></g></svg>
|
||
<figcaption><a href='vpermilpd.html#fig-5-23'>Figure 5-23</a>. VPERMILPD Operation</figcaption></figure>
|
||
<p>VEX.256 encoded version: Bits (MAXVL-1:256) of the corresponding ZMM register are zeroed.</p>
|
||
<figure id="fig-5-24">
|
||
<svg style="width: 566.208048pt; height: 132.69597600000003pt" viewBox="63.56 0.0 476.84004 115.57998000000003">
|
||
<g xmlns="http://www.w3.org/2000/svg" style="fill: none; stroke: none">
|
||
<rect height="109.56" style="fill: rgb(0%, 0%, 0%)" width="0.48" x="66.06" y="0.5399800000000141"></rect>
|
||
<rect height="109.56" style="fill: rgb(0%, 0%, 0%)" width="0.48004" x="537.42" y="0.5399800000000141"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="471.84000000000003" x="66.06" y="0.0"></rect>
|
||
<rect height="0.47998" style="fill: rgb(0%, 0%, 0%)" width="471.84000000000003" x="66.06" y="110.10000000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.76" x="449.88" y="36.23998"></rect>
|
||
<rect height="36.06" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="466.62" y="36.71998000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.7" x="449.40000000000003" y="71.75998000000004"></rect>
|
||
<rect height="36.0" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="449.40000000000003" y="36.23998"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="71.52" x="119.04" y="36.47998000000001"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="119.04" y="36.23997000000003"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="190.32" y="36.47998000000001"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="118.80000000000001" y="72.23997000000003"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="118.80000000000001" y="36.23998"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="18.96" x="467.40000000000003" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.5" x="467.40000000000003" y="35.99998000000005"></rect>
|
||
<rect height="36.54" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="485.88" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.44" x="466.92" y="71.99998000000005"></rect>
|
||
<rect height="36.480000000000004" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="466.92" y="35.999979999999994"></rect>
|
||
<rect height="35.52" style="fill: rgb(100%, 100%, 100%)" width="17.22" x="340.86" y="36.71998000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.76" x="340.86" y="36.23998"></rect>
|
||
<rect height="36.06" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="357.6" y="36.71998000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.7" x="340.38" y="71.75998000000004"></rect>
|
||
<rect height="36.0" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="340.38" y="36.23998"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="18.96" x="358.38" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.5" x="358.38" y="35.99998000000005"></rect>
|
||
<rect height="36.54" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="376.86" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.44" x="357.90000000000003" y="71.99998000000005"></rect>
|
||
<rect height="36.480000000000004" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="357.90000000000003" y="35.999979999999994"></rect>
|
||
<rect height="35.52" style="fill: rgb(100%, 100%, 100%)" width="17.16" x="191.88" y="36.71998000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.7" x="191.88" y="36.23998"></rect>
|
||
<rect height="36.06" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="208.56" y="36.71998000000002"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="17.64" x="191.4" y="71.75998000000004"></rect>
|
||
<rect height="36.0" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="191.4" y="36.23998"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="19.02" x="209.34" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.56" x="209.34" y="35.99998000000005"></rect>
|
||
<rect height="36.54" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="227.88" y="36.47998000000001"></rect>
|
||
<rect height="1.02" style="fill: rgb(0%, 0%, 0%)" width="19.5" x="208.86" y="71.99998000000005"></rect>
|
||
<rect height="36.480000000000004" style="fill: rgb(0%, 0%, 0%)" width="1.02" x="208.86" y="35.999979999999994"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="71.52" x="268.56" y="35.93998000000005"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="268.56" y="35.69997000000001"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="339.84000000000003" y="35.93997999999999"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="268.32" y="71.69997000000001"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="268.32" y="35.69998000000004"></rect>
|
||
<rect height="36.0" style="fill: rgb(100%, 100%, 100%)" width="71.52" x="377.04" y="36.47998000000001"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="377.04" y="36.23997000000003"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.48001000000000005" x="448.32" y="36.47998000000001"></rect>
|
||
<rect height="0.48001000000000005" style="fill: rgb(0%, 0%, 0%)" width="71.76" x="376.8" y="72.23997000000003"></rect>
|
||
<rect height="36.24" style="fill: rgb(0%, 0%, 0%)" width="0.47998" x="376.8" y="36.23998"></rect>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="12.191040000000044" x="470.58" y="24.83134000000001">Bit</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.505719999999997pt; fill: #000" textLength="30.660000000000082" x="323.58" y="34.85134000000005">6665</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025720000000002pt; fill: #000" textLength="4.980000000000018" x="455.76" y="34.37134000000005">1</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="14.999759999999966" x="119.04" y="35.33134000000001">255</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="34.19965199999996" x="174.06" y="34.85134000000005">194193</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025720000000002pt; fill: #000" textLength="4.980000000000018" x="432.06" y="34.85134000000007">2</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="14.999760000000038" x="268.559964" y="34.85141200000004">127</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="9.960000000000036" x="377.039964" y="35.33141200000006">63</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 19.925999999999988pt; fill: #000" textLength="22.50000000000003" x="238.08" y="66.34798">. . .</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 10.55620758751894pt; fill: #000" textLength="27.766813953043766" x="296.58" y="59.959727821954914">ignored</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 10.55620758751894pt; fill: #000" textLength="27.726642833043798" x="405.06" y="60.499727821954934">ignored</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 10.55620758751894pt; fill: #000" textLength="10.150189453812317" x="193.38" y="60.979727821954896">sel</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 10.55620758751894pt; fill: #000" textLength="10.149276473812336" x="342.36" y="60.979727821954896">sel</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 10.55620758751894pt; fill: #000" textLength="10.150189453812345" x="451.38" y="60.979727821954896">sel</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="61.06774799999991" x="162.06028799999999" y="96.83134000000001">Control Field 4</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="30.53536799999989" x="310.079832" y="96.83134000000001">Control</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="28.01050799999996" x="343.13009999999986" y="96.83134000000001">Field 2</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="30.52042799999998" x="419.1" y="96.83134000000001">Control</text>
|
||
<text lengthAdjust="spacingAndGlyphs" style="font-size: 11.025719999999978pt; fill: #000" textLength="25.534452000000044" x="452.133336" y="96.83134000000001">Field1</text></g></svg>
|
||
<figcaption><a href='vpermilpd.html#fig-5-24'>Figure 5-24</a>. VPERMILPD Shuffle Control</figcaption></figure>
|
||
<p>Immediate control version: Permute pairs of double precision floating-point values in the first source operand (second operand), each pair using a 1-bit control field in the imm8 byte. Each element in the destination operand (first operand) use a separate control bit of the imm8 byte.</p>
|
||
<p>VEX version: The source operand is a YMM/XMM register or a 256/128-bit memory location and the destination operand is a YMM/XMM register. Imm8 byte provides the lower 4/2 bit as permute control fields.</p>
|
||
<p>EVEX version: The source operand (second operand) is a ZMM/YMM/XMM register, a 512/256/128-bit memory location or a 512/256/128-bit vector broadcasted from a 64-bit memory location. Permuted results are written to the destination under the writemask. Imm8 byte provides the lower 8/4/2 bit as permute control fields.</p>
|
||
<p>Note: For the imm8 versions, VEX.vvvv and EVEX.vvvv are reserved and must be 1111b otherwise instruction will #UD.</p>
|
||
<h3 id="operation">Operation<a class="anchor" href="#operation">
|
||
¶
|
||
</a></h3>
|
||
<h4 id="vpermilpd--evex-immediate-versions-">VPERMILPD (EVEX immediate versions)<a class="anchor" href="#vpermilpd--evex-immediate-versions-">
|
||
¶
|
||
</a></h4>
|
||
<pre>(KL, VL) = (8, 512)
|
||
FOR j := 0 TO KL-1
|
||
i := j * 64
|
||
IF (EVEX.b = 1) AND (SRC1 *is memory*)
|
||
THEN TMP_SRC1[i+63:i] := SRC1[63:0];
|
||
ELSE TMP_SRC1[i+63:i] := SRC1[i+63:i];
|
||
FI;
|
||
ENDFOR;
|
||
IF (imm8[0] = 0) THEN TMP_DEST[63:0] := SRC1[63:0]; FI;
|
||
IF (imm8[0] = 1) THEN TMP_DEST[63:0] := TMP_SRC1[127:64]; FI;
|
||
IF (imm8[1] = 0) THEN TMP_DEST[127:64] := TMP_SRC1[63:0]; FI;
|
||
IF (imm8[1] = 1) THEN TMP_DEST[127:64] := TMP_SRC1[127:64]; FI;
|
||
IF VL >= 256
|
||
IF (imm8[2] = 0) THEN TMP_DEST[191:128] := TMP_SRC1[191:128]; FI;
|
||
IF (imm8[2] = 1) THEN TMP_DEST[191:128] := TMP_SRC1[255:192]; FI;
|
||
IF (imm8[3] = 0) THEN TMP_DEST[255:192] := TMP_SRC1[191:128]; FI;
|
||
IF (imm8[3] = 1) THEN TMP_DEST[255:192] := TMP_SRC1[255:192]; FI;
|
||
FI;
|
||
IF VL >= 512
|
||
IF (imm8[4] = 0) THEN TMP_DEST[319:256] := TMP_SRC1[319:256]; FI;
|
||
IF (imm8[4] = 1) THEN TMP_DEST[319:256] := TMP_SRC1[383:320]; FI;
|
||
IF (imm8[5] = 0) THEN TMP_DEST[383:320] := TMP_SRC1[319:256]; FI;
|
||
IF (imm8[5] = 1) THEN TMP_DEST[383:320] := TMP_SRC1[383:320]; FI;
|
||
IF (imm8[6] = 0) THEN TMP_DEST[447:384] := TMP_SRC1[447:384]; FI;
|
||
IF (imm8[6] = 1) THEN TMP_DEST[447:384] := TMP_SRC1[511:448]; FI;
|
||
IF (imm8[7] = 0) THEN TMP_DEST[511:448] := TMP_SRC1[447:384]; FI;
|
||
IF (imm8[7] = 1) THEN TMP_DEST[511:448] := TMP_SRC1[511:448]; FI;
|
||
FI;
|
||
FOR j := 0 TO KL-1
|
||
i := j * 64
|
||
IF k1[j] OR *no writemask*
|
||
THEN DEST[i+63:i] := TMP_DEST[i+63:i]
|
||
ELSE
|
||
IF *merging-masking*
|
||
THEN *DEST[i+63:i] remains unchanged*
|
||
ELSE ; zeroing-masking
|
||
DEST[i+63:i] := 0
|
||
FI
|
||
FI;
|
||
ENDFOR
|
||
DEST[MAXVL-1:VL] := 0
|
||
</pre>
|
||
<h4 id="vpermilpd--256-bit-immediate-version-">VPERMILPD (256-bit immediate version)<a class="anchor" href="#vpermilpd--256-bit-immediate-version-">
|
||
¶
|
||
</a></h4>
|
||
<pre>IF (imm8[0] = 0) THEN DEST[63:0] := SRC1[63:0]
|
||
IF (imm8[0] = 1) THEN DEST[63:0] := SRC1[127:64]
|
||
IF (imm8[1] = 0) THEN DEST[127:64] := SRC1[63:0]
|
||
IF (imm8[1] = 1) THEN DEST[127:64] := SRC1[127:64]
|
||
IF (imm8[2] = 0) THEN DEST[191:128] := SRC1[191:128]
|
||
IF (imm8[2] = 1) THEN DEST[191:128] := SRC1[255:192]
|
||
IF (imm8[3] = 0) THEN DEST[255:192] := SRC1[191:128]
|
||
IF (imm8[3] = 1) THEN DEST[255:192] := SRC1[255:192]
|
||
DEST[MAXVL-1:256] := 0
|
||
</pre>
|
||
<h4 id="vpermilpd--128-bit-immediate-version-">VPERMILPD (128-bit immediate version)<a class="anchor" href="#vpermilpd--128-bit-immediate-version-">
|
||
¶
|
||
</a></h4>
|
||
<pre>IF (imm8[0] = 0) THEN DEST[63:0] := SRC1[63:0]
|
||
IF (imm8[0] = 1) THEN DEST[63:0] := SRC1[127:64]
|
||
IF (imm8[1] = 0) THEN DEST[127:64] := SRC1[63:0]
|
||
IF (imm8[1] = 1) THEN DEST[127:64] := SRC1[127:64]
|
||
DEST[MAXVL-1:128] := 0
|
||
</pre>
|
||
<h4 id="vpermilpd--evex-variable-versions-">VPERMILPD (EVEX variable versions)<a class="anchor" href="#vpermilpd--evex-variable-versions-">
|
||
¶
|
||
</a></h4>
|
||
<pre>(KL, VL) = (2, 128), (4, 256), (8, 512)
|
||
FOR j := 0 TO KL-1
|
||
i := j * 64
|
||
IF (EVEX.b = 1) AND (SRC2 *is memory*)
|
||
THEN TMP_SRC2[i+63:i] := SRC2[63:0];
|
||
ELSE TMP_SRC2[i+63:i] := SRC2[i+63:i];
|
||
FI;
|
||
ENDFOR;
|
||
IF (TMP_SRC2[1] = 0) THEN TMP_DEST[63:0] := SRC1[63:0]; FI;
|
||
IF (TMP_SRC2[1] = 1) THEN TMP_DEST[63:0] := SRC1[127:64]; FI;
|
||
IF (TMP_SRC2[65] = 0) THEN TMP_DEST[127:64] := SRC1[63:0]; FI;
|
||
IF (TMP_SRC2[65] = 1) THEN TMP_DEST[127:64] := SRC1[127:64]; FI;
|
||
IF VL >= 256
|
||
IF (TMP_SRC2[129] = 0) THEN TMP_DEST[191:128] := SRC1[191:128]; FI;
|
||
IF (TMP_SRC2[129] = 1) THEN TMP_DEST[191:128] := SRC1[255:192]; FI;
|
||
IF (TMP_SRC2[193] = 0) THEN TMP_DEST[255:192] := SRC1[191:128]; FI;
|
||
IF (TMP_SRC2[193] = 1) THEN TMP_DEST[255:192] := SRC1[255:192]; FI;
|
||
FI;
|
||
IF VL >= 512
|
||
IF (TMP_SRC2[257] = 0) THEN TMP_DEST[319:256] := SRC1[319:256]; FI;
|
||
IF (TMP_SRC2[257] = 1) THEN TMP_DEST[319:256] := SRC1[383:320]; FI;
|
||
IF (TMP_SRC2[321] = 0) THEN TMP_DEST[383:320] := SRC1[319:256]; FI;
|
||
IF (TMP_SRC2[321] = 1) THEN TMP_DEST[383:320] := SRC1[383:320]; FI;
|
||
IF (TMP_SRC2[385] = 0) THEN TMP_DEST[447:384] := SRC1[447:384]; FI;
|
||
IF (TMP_SRC2[385] = 1) THEN TMP_DEST[447:384] := SRC1[511:448]; FI;
|
||
IF (TMP_SRC2[449] = 0) THEN TMP_DEST[511:448] := SRC1[447:384]; FI;
|
||
IF (TMP_SRC2[449] = 1) THEN TMP_DEST[511:448] := SRC1[511:448]; FI;
|
||
FI;
|
||
FOR j := 0 TO KL-1
|
||
i := j * 64
|
||
IF k1[j] OR *no writemask*
|
||
THEN DEST[i+63:i] := TMP_DEST[i+63:i]
|
||
ELSE
|
||
IF *merging-masking*
|
||
THEN *DEST[i+63:i] remains unchanged*
|
||
ELSE ; zeroing-masking
|
||
DEST[i+63:i] := 0
|
||
FI
|
||
FI;
|
||
ENDFOR
|
||
DEST[MAXVL-1:VL] := 0
|
||
</pre>
|
||
<h4 id="vpermilpd--256-bit-variable-version-">VPERMILPD (256-bit variable version)<a class="anchor" href="#vpermilpd--256-bit-variable-version-">
|
||
¶
|
||
</a></h4>
|
||
<pre>IF (SRC2[1] = 0) THEN DEST[63:0] := SRC1[63:0]
|
||
IF (SRC2[1] = 1) THEN DEST[63:0] := SRC1[127:64]
|
||
IF (SRC2[65] = 0) THEN DEST[127:64] := SRC1[63:0]
|
||
IF (SRC2[65] = 1) THEN DEST[127:64] := SRC1[127:64]
|
||
IF (SRC2[129] = 0) THEN DEST[191:128] := SRC1[191:128]
|
||
IF (SRC2[129] = 1) THEN DEST[191:128] := SRC1[255:192]
|
||
IF (SRC2[193] = 0) THEN DEST[255:192] := SRC1[191:128]
|
||
IF (SRC2[193] = 1) THEN DEST[255:192] := SRC1[255:192]
|
||
DEST[MAXVL-1:256] := 0
|
||
</pre>
|
||
<h4 id="vpermilpd--128-bit-variable-version-">VPERMILPD (128-bit variable version)<a class="anchor" href="#vpermilpd--128-bit-variable-version-">
|
||
¶
|
||
</a></h4>
|
||
<pre>IF (SRC2[1] = 0) THEN DEST[63:0] := SRC1[63:0]
|
||
IF (SRC2[1] = 1) THEN DEST[63:0] := SRC1[127:64]
|
||
IF (SRC2[65] = 0) THEN DEST[127:64] := SRC1[63:0]
|
||
IF (SRC2[65] = 1) THEN DEST[127:64] := SRC1[127:64]
|
||
DEST[MAXVL-1:128] := 0
|
||
</pre>
|
||
<h3 id="intel-c-c++-compiler-intrinsic-equivalent">Intel C/C++ Compiler Intrinsic Equivalent<a class="anchor" href="#intel-c-c++-compiler-intrinsic-equivalent">
|
||
¶
|
||
</a></h3>
|
||
<pre>VPERMILPD __m512d _mm512_permute_pd( __m512d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m512d _mm512_mask_permute_pd(__m512d s, __mmask8 k, __m512d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m512d _mm512_maskz_permute_pd( __mmask8 k, __m512d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_mask_permute_pd(__m256d s, __mmask8 k, __m256d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_maskz_permute_pd( __mmask8 k, __m256d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_mask_permute_pd(__m128d s, __mmask8 k, __m128d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_maskz_permute_pd( __mmask8 k, __m128d a, int imm);
|
||
</pre>
|
||
<pre>VPERMILPD __m512d _mm512_permutevar_pd( __m512i i, __m512d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m512d _mm512_mask_permutevar_pd(__m512d s, __mmask8 k, __m512i i, __m512d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m512d _mm512_maskz_permutevar_pd( __mmask8 k, __m512i i, __m512d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_mask_permutevar_pd(__m256d s, __mmask8 k, __m256d i, __m256d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_maskz_permutevar_pd( __mmask8 k, __m256d i, __m256d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_mask_permutevar_pd(__m128d s, __mmask8 k, __m128d i, __m128d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_maskz_permutevar_pd( __mmask8 k, __m128d i, __m128d a);
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_permute_pd (__m128d a, int control)
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_permute_pd (__m256d a, int control)
|
||
</pre>
|
||
<pre>VPERMILPD __m128d _mm_permutevar_pd (__m128d a, __m128i control);
|
||
</pre>
|
||
<pre>VPERMILPD __m256d _mm256_permutevar_pd (__m256d a, __m256i control);
|
||
</pre>
|
||
<h3 class="exceptions" id="simd-floating-point-exceptions">SIMD Floating-Point Exceptions<a class="anchor" href="#simd-floating-point-exceptions">
|
||
¶
|
||
</a></h3>
|
||
<p>None.</p>
|
||
<h3 class="exceptions" id="other-exceptions">Other Exceptions<a class="anchor" href="#other-exceptions">
|
||
¶
|
||
</a></h3>
|
||
<p>Non-EVEX-encoded instruction, see <span class="not-imported">Table 2-21</span>, “Type 4 Class Exception Conditions.”</p>
|
||
<p>Additionally:</p>
|
||
<table>
|
||
<tr>
|
||
<td>#UD</td>
|
||
<td>If VEX.W = 1.</td></tr></table>
|
||
<p>EVEX-encoded instruction, see <span class="not-imported">Table 2-50</span>, “Type E4NF Class Exception Conditions.”</p>
|
||
<p>Additionally:</p>
|
||
<table>
|
||
<tr>
|
||
<td>#UD</td>
|
||
<td>If either (E)VEX.vvvv != 1111B and with imm8.</td></tr></table><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>
|