ia32-64/x86/kshiftlw.kshiftlb.kshiftlq.kshiftld.html
2025-07-08 02:23:29 -03:00

117 lines
4.4 KiB
HTML
Raw 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>KSHIFTLW/KSHIFTLB/KSHIFTLQ/KSHIFTLD
— Shift Left Mask Registers</title></head><body><header><nav><ul><li><a href='index.html'>Index</a></li><li>December 2023</li></ul></nav></header><h1>KSHIFTLW/KSHIFTLB/KSHIFTLQ/KSHIFTLD
— Shift Left Mask Registers</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.L0.66.0F3A.W1 32 /r KSHIFTLW k1, k2, imm8</td>
<td>RRI</td>
<td>V/V</td>
<td>AVX512F</td>
<td>Shift left 16 bits in k2 by immediate and write result in k1.</td></tr>
<tr>
<td>VEX.L0.66.0F3A.W0 32 /r KSHIFTLB k1, k2, imm8</td>
<td>RRI</td>
<td>V/V</td>
<td>AVX512DQ</td>
<td>Shift left 8 bits in k2 by immediate and write result in k1.</td></tr>
<tr>
<td>VEX.L0.66.0F3A.W1 33 /r KSHIFTLQ k1, k2, imm8</td>
<td>RRI</td>
<td>V/V</td>
<td>AVX512BW</td>
<td>Shift left 64 bits in k2 by immediate and write result in k1.</td></tr>
<tr>
<td>VEX.L0.66.0F3A.W0 33 /r KSHIFTLD k1, k2, imm8</td>
<td>RRI</td>
<td>V/V</td>
<td>AVX512BW</td>
<td>Shift left 32 bits in k2 by immediate and write result in 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>Operand 1</th>
<th>Operand 2</th>
<th>Operand 3</th></tr>
<tr>
<td>RRI</td>
<td>ModRM:reg (w)</td>
<td>ModRM:r/m (r, ModRM:[7:6] must be 11b)</td>
<td>imm8</td></tr></table>
<h2 id="description">Description<a class="anchor" href="#description">
</a></h2>
<p>Shifts 8/16/32/64 bits in the second operand (source operand) left by the count specified in immediate byte and place the least significant 8/16/32/64 bits of the result in the destination operand. The higher bits of the destination are zero-extended. The destination is set to zero if the count value is greater than 7 (for byte shift), 15 (for word shift), 31 (for doubleword shift) or 63 (for quadword shift).</p>
<h2 id="operation">Operation<a class="anchor" href="#operation">
</a></h2>
<h3 id="kshiftlw">KSHIFTLW<a class="anchor" href="#kshiftlw">
</a></h3>
<pre>COUNT := imm8[7:0]
DEST[MAX_KL-1:0] := 0
IF COUNT &lt;=15
THEN DEST[15:0] := SRC1[15:0] &lt;&lt; COUNT;
FI;
</pre>
<h3 id="kshiftlb">KSHIFTLB<a class="anchor" href="#kshiftlb">
</a></h3>
<pre>COUNT := imm8[7:0]
DEST[MAX_KL-1:0] := 0
IF COUNT &lt;=7
THEN DEST[7:0] := SRC1[7:0] &lt;&lt; COUNT;
FI;
</pre>
<h3 id="kshiftlq">KSHIFTLQ<a class="anchor" href="#kshiftlq">
</a></h3>
<pre>COUNT := imm8[7:0]
DEST[MAX_KL-1:0] := 0
IF COUNT &lt;=63
THEN DEST[63:0] := SRC1[63:0] &lt;&lt; COUNT;
FI;
</pre>
<h3 id="kshiftld">KSHIFTLD<a class="anchor" href="#kshiftld">
</a></h3>
<pre>COUNT := imm8[7:0]
DEST[MAX_KL-1:0] := 0
IF COUNT &lt;=31
THEN DEST[31:0] := SRC1[31:0] &lt;&lt; COUNT;
FI;
</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>Compiler auto generates KSHIFTLW when needed.
</pre>
<h2 id="flags-affected">Flags Affected<a class="anchor" href="#flags-affected">
</a></h2>
<p>None.</p>
<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>See <span class="not-imported">Table 2-63</span>, “TYPE K20 Exception Definition (VEX-Encoded OpMask Instructions w/o Memory Arg).”</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>