diff options
-rw-r--r-- | docs/LangRef.html | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index 308dd207e5..10fb2e6a6c 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -2168,18 +2168,28 @@ Instruction</a> </div> <h5>Syntax:</h5> <pre> <result> = shl <ty> <var1>, <var2> <i>; yields {ty}:result</i> </pre> + <h5>Overview:</h5> + <p>The '<tt>shl</tt>' instruction returns the first operand shifted to the left a specified number of bits.</p> + <h5>Arguments:</h5> + <p>Both arguments to the '<tt>shl</tt>' instruction must be the same <a href="#t_integer">integer</a> type.</p> + <h5>Semantics:</h5> -<p>The value produced is <tt>var1</tt> * 2<sup><tt>var2</tt></sup>.</p> + +<p>The value produced is <tt>var1</tt> * 2<sup><tt>var2</tt></sup>. If +<tt>var2</tt> is (statically or dynamically) equal to or larger than the number +of bits in <tt>var1</tt>, the result is undefined.</p> + <h5>Example:</h5><pre> <result> = shl i32 4, %var <i>; yields {i32}: 4 << %var</i> <result> = shl i32 4, 2 <i>; yields {i32}: 16</i> <result> = shl i32 1, 10 <i>; yields {i32}: 1024</i> + <result> = shl i32 1, 32 <i>; undefined</i> </pre> </div> <!-- _______________________________________________________________________ --> @@ -2199,9 +2209,11 @@ operand shifted to the right a specified number of bits with zero fill.</p> <a href="#t_integer">integer</a> type.</p> <h5>Semantics:</h5> + <p>This instruction always performs a logical shift right operation. The most significant bits of the result will be filled with zero bits after the -shift.</p> +shift. If <tt>var2</tt> is (statically or dynamically) equal to or larger than +the number of bits in <tt>var1</tt>, the result is undefined.</p> <h5>Example:</h5> <pre> @@ -2209,6 +2221,7 @@ shift.</p> <result> = lshr i32 4, 2 <i>; yields {i32}:result = 1</i> <result> = lshr i8 4, 3 <i>; yields {i8}:result = 0</i> <result> = lshr i8 -2, 1 <i>; yields {i8}:result = 0x7FFFFFFF </i> + <result> = lshr i32 1, 32 <i>; undefined</i> </pre> </div> @@ -2232,7 +2245,9 @@ operand shifted to the right a specified number of bits with sign extension.</p> <h5>Semantics:</h5> <p>This instruction always performs an arithmetic shift right operation, The most significant bits of the result will be filled with the sign bit -of <tt>var1</tt>.</p> +of <tt>var1</tt>. If <tt>var2</tt> is (statically or dynamically) equal to or +larger than the number of bits in <tt>var1</tt>, the result is undefined. +</p> <h5>Example:</h5> <pre> @@ -2240,6 +2255,7 @@ of <tt>var1</tt>.</p> <result> = ashr i32 4, 2 <i>; yields {i32}:result = 1</i> <result> = ashr i8 4, 3 <i>; yields {i8}:result = 0</i> <result> = ashr i8 -2, 1 <i>; yields {i8}:result = -1</i> + <result> = ashr i32 1, 32 <i>; undefined</i> </pre> </div> |