diff options
author | Chris Lattner <sabre@nondot.org> | 2006-04-08 00:13:41 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-04-08 00:13:41 +0000 |
commit | c1989542eba5086b073e28e235014f9a1d30daaf (patch) | |
tree | 7def74de1d0f1a855e3df90ced255d7e2572d2c7 | |
parent | c5cdff234149596361d6175d57c3e76e864c9455 (diff) | |
download | external_llvm-c1989542eba5086b073e28e235014f9a1d30daaf.zip external_llvm-c1989542eba5086b073e28e235014f9a1d30daaf.tar.gz external_llvm-c1989542eba5086b073e28e235014f9a1d30daaf.tar.bz2 |
Description for the new shufflevector instruction I'm adding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27502 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/LangRef.html | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index ab0d66d..d0304f9 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -111,6 +111,7 @@ <li><a href="#i_vselect">'<tt>vselect</tt>' Instruction</a></li> <li><a href="#i_extractelement">'<tt>extractelement</tt>' Instruction</a></li> <li><a href="#i_insertelement">'<tt>insertelement</tt>' Instruction</a></li> + <li><a href="#i_shufflevector">'<tt>shufflevector</tt>' Instruction</a></li> <li><a href="#i_call">'<tt>call</tt>' Instruction</a></li> <li><a href="#i_va_arg">'<tt>va_arg</tt>' Instruction</a></li> </ol> @@ -1135,6 +1136,12 @@ following is the syntax for constant expressions:</p> <dd>Perform the <a href="#i_insertelement">insertelement operation</a> on constants. + + <dt><b><tt>shufflevector ( VEC1, VEC2, IDXMASK )</tt></b></dt> + + <dd>Perform the <a href="#i_shufflevector">shufflevector + operation</a> on constants. + <dt><b><tt>OPCODE ( LHS, RHS )</tt></b></dt> <dd>Perform the specified operation of the LHS and RHS constants. OPCODE may @@ -2608,6 +2615,58 @@ exceeds the length of <tt>val</tt>, the results are undefined. </pre> </div> +<!-- _______________________________________________________________________ --> +<div class="doc_subsubsection"> + <a name="i_shufflevector">'<tt>shufflevector</tt>' Instruction</a> +</div> + +<div class="doc_text"> + +<h5>Syntax:</h5> + +<pre> + <result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <n x uint> <mask> <i>; yields <n x <ty>></i> +</pre> + +<h5>Overview:</h5> + +<p> +The '<tt>shufflevector</tt>' instruction constructs a permutation of elements +from two input vectors, returning a vector of the same type. +</p> + +<h5>Arguments:</h5> + +<p> +The first two operands of a '<tt>shufflevector</tt>' instruction are vectors +with types that match each other and types that match the result of the +instruction. The third argument is a shuffle mask, which has the same number +of elements as the other vector type, but whose element type is always 'uint'. +</p> + +<p> +The shuffle mask operand is required to be a constant vector with either +constant integer or undef values. +</p> + +<h5>Semantics:</h5> + +<p> +The elements of the two input vectors are numbered from left to right across +both of the vectors. The shuffle mask operand specifies, for each element of +the result vector, which element of the two input registers the result element +gets. The element selector may be undef (meaning "don't care") and the second +operand may be undef if performing a shuffle from only one vector. +</p> + +<h5>Example:</h5> + +<pre> + %result = shufflevector <4 x int> %v1, <4 x int> %v2, <4 x uint> <uint 0, uint 4, uint 1, uint 5> <i>; yields <4 x int></i> + %result = shufflevector <4 x int> %v1, <4 x int> undef, <4 x uint> <uint 0, uint 1, uint 2, uint 3> <i>; yields <4 x int></i> - Identity shuffle. +</pre> +</div> + <!-- _______________________________________________________________________ --> <div class="doc_subsubsection"> |