[llvm-commits] CVS: llvm/docs/LangRef.html

Tanya Brethour tbrethou at cs.uiuc.edu
Fri Apr 14 12:24:45 PDT 2006



Changes in directory llvm/docs:

LangRef.html updated: 1.148 -> 1.149
---
Log message:

Adding back vector instructions to keep in mainline.


---
Diffs of the changes:  (+192 -1)

 LangRef.html |  193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 192 insertions(+), 1 deletion(-)


Index: llvm/docs/LangRef.html
diff -u llvm/docs/LangRef.html:1.148 llvm/docs/LangRef.html:1.149
--- llvm/docs/LangRef.html:1.148	Fri Apr 14 14:07:42 2006
+++ llvm/docs/LangRef.html	Fri Apr 14 14:24:33 2006
@@ -96,6 +96,9 @@
           <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_vsetint">'<tt>vsetint</tt>' Instruction</a></li>
+          <li><a href="#i_vsetfp">'<tt>vsetfp</tt>' Instruction</a></li>
+          <li><a href="#i_vselect">'<tt>vselect</tt>' Instruction</a></li>
         </ol>
       </li>
       <li><a href="#memoryops">Memory Access Operations</a>
@@ -2057,6 +2060,194 @@
 </pre>
 </div>
 
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection"> <a name="i_vsetint">'<tt>vsetint</tt>'
+Instruction</a> </div>
+<div class="doc_text">
+<h5>Syntax:</h5>
+<pre><result> = vsetint <op>, <n x <ty>> <var1>, <var2>   <i>; yields <n x bool></i>
+</pre>
+
+<h5>Overview:</h5>
+
+<p>The '<tt>vsetint</tt>' instruction takes two integer vectors and
+returns a vector of boolean values representing, at each position, the
+result of the comparison between the values at that position in the
+two operands.</p>
+
+<h5>Arguments:</h5>
+
+<p>The arguments to a '<tt>vsetint</tt>' instruction are a comparison
+operation and two value arguments.  The value arguments must be of <a
+href="#t_integral">integral</a> <a href="#t_packed">packed</a> type,
+and they must have identical types.  The operation argument must be
+one of <tt>eq</tt>, <tt>ne</tt>, <tt>slt</tt>, <tt>sgt</tt>,
+<tt>sle</tt>, <tt>sge</tt>, <tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>,
+<tt>uge</tt>, <tt>true</tt>, and <tt>false</tt>.  The result is a
+packed <tt>bool</tt> value with the same length as each operand.</p>
+
+<h5>Semantics:</h5>
+
+<p>The following table shows the semantics of '<tt>vsetint</tt>'.  For
+each position of the result, the comparison is done on the
+corresponding positions of the two value arguments.  Note that the
+signedness of the comparison depends on the comparison opcode and
+<i>not</i> on the signedness of the value operands.  E.g., <tt>vsetint
+slt <4 x unsigned> %x, %y</tt> does an elementwise <i>signed</i>
+comparison of <tt>%x</tt> and <tt>%y</tt>.</p>
+
+<table  border="1" cellspacing="0" cellpadding="4">
+  <tbody>
+    <tr><th>Operation</th><th>Result is true iff</th><th>Comparison is</th></tr>
+    <tr><td><tt>eq</tt></td><td>var1 == var2</td><td>--</td></tr>
+    <tr><td><tt>ne</tt></td><td>var1 != var2</td><td>--</td></tr>
+    <tr><td><tt>slt</tt></td><td>var1 < var2</td><td>signed</td></tr>
+    <tr><td><tt>sgt</tt></td><td>var1 > var2</td><td>signed</td></tr>
+    <tr><td><tt>sle</tt></td><td>var1 <= var2</td><td>signed</td></tr>
+    <tr><td><tt>sge</tt></td><td>var1 >= var2</td><td>signed</td></tr>
+    <tr><td><tt>ult</tt></td><td>var1 < var2</td><td>unsigned</td></tr>
+    <tr><td><tt>ugt</tt></td><td>var1 > var2</td><td>unsigned</td></tr>
+    <tr><td><tt>ule</tt></td><td>var1 <= var2</td><td>unsigned</td></tr>
+    <tr><td><tt>uge</tt></td><td>var1 >= var2</td><td>unsigned</td></tr>
+    <tr><td><tt>true</tt></td><td>always</td><td>--</td></tr>
+    <tr><td><tt>false</tt></td><td>never</td><td>--</td></tr>
+  </tbody>
+</table>
+
+<h5>Example:</h5>
+<pre>  <result> = vsetint eq <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = false, false</i>
+  <result> = vsetint ne <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = true, true</i>
+  <result> = vsetint slt <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = true, false</i>
+  <result> = vsetint sgt <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = false, true</i>
+  <result> = vsetint sle <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = true, false</i>
+  <result> = vsetint sge <2 x int> <int 0, int 1>, <int 1, int 0>      <i>; yields {<2 x bool>}:result = false, true</i>
+</pre>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection"> <a name="i_vsetfp">'<tt>vsetfp</tt>'
+Instruction</a> </div>
+<div class="doc_text">
+<h5>Syntax:</h5>
+<pre><result> = vsetfp <op>, <n x <ty>> <var1>, <var2>   <i>; yields <n x bool></i>
+</pre>
+
+<h5>Overview:</h5>
+
+<p>The '<tt>vsetfp</tt>' instruction takes two floating point vector
+arguments and returns a vector of boolean values representing, at each
+position, the result of the comparison between the values at that
+position in the two operands.</p>
+
+<h5>Arguments:</h5>
+
+<p>The arguments to a '<tt>vsetfp</tt>' instruction are a comparison
+operation and two value arguments.  The value arguments must be of <a
+href="t_floating">floating point</a> <a href="#t_packed">packed</a>
+type, and they must have identical types.  The operation argument must
+be one of <tt>eq</tt>, <tt>ne</tt>, <tt>lt</tt>, <tt>gt</tt>,
+<tt>le</tt>, <tt>ge</tt>, <tt>oeq</tt>, <tt>one</tt>, <tt>olt</tt>,
+<tt>ogt</tt>, <tt>ole</tt>, <tt>oge</tt>, <tt>ueq</tt>, <tt>une</tt>,
+<tt>ult</tt>, <tt>ugt</tt>, <tt>ule</tt>, <tt>uge</tt>, <tt>o</tt>,
+<tt>u</tt>, <tt>true</tt>, and <tt>false</tt>.  The result is a packed
+<tt>bool</tt> value with the same length as each operand.</p>
+
+<h5>Semantics:</h5>
+
+<p>The following table shows the semantics of '<tt>vsetfp</tt>' for
+floating point types.  If either operand is a floating point Not a
+Number (NaN) value, the operation is unordered, and the value in the
+first column below is produced at that position.  Otherwise, the
+operation is ordered, and the value in the second column is
+produced.</p>
+
+<table  border="1" cellspacing="0" cellpadding="4">
+  <tbody>
+    <tr><th>Operation</th><th>If unordered<th>Otherwise true iff</th></tr>
+    <tr><td><tt>eq</tt></td><td>undefined</td><td>var1 == var2</td></tr>
+    <tr><td><tt>ne</tt></td><td>undefined</td><td>var1 != var2</td></tr>
+    <tr><td><tt>lt</tt></td><td>undefined</td><td>var1 < var2</td></tr>
+    <tr><td><tt>gt</tt></td><td>undefined</td><td>var1 > var2</td></tr>
+    <tr><td><tt>le</tt></td><td>undefined</td><td>var1 <= var2</td></tr>
+    <tr><td><tt>ge</tt></td><td>undefined</td><td>var1 >= var2</td></tr>
+    <tr><td><tt>oeq</tt></td><td>false</td><td>var1 == var2</td></tr>
+    <tr><td><tt>one</tt></td><td>false</td><td>var1 != var2</td></tr>
+    <tr><td><tt>olt</tt></td><td>false</td><td>var1 < var2</td></tr>
+    <tr><td><tt>ogt</tt></td><td>false</td><td>var1 > var2</td></tr>
+    <tr><td><tt>ole</tt></td><td>false</td><td>var1 <= var2</td></tr>
+    <tr><td><tt>oge</tt></td><td>false</td><td>var1 >= var2</td></tr>
+    <tr><td><tt>ueq</tt></td><td>true</td><td>var1 == var2</td></tr>
+    <tr><td><tt>une</tt></td><td>true</td><td>var1 != var2</td></tr>
+    <tr><td><tt>ult</tt></td><td>true</td><td>var1 < var2</td></tr>
+    <tr><td><tt>ugt</tt></td><td>true</td><td>var1 > var2</td></tr>
+    <tr><td><tt>ule</tt></td><td>true</td><td>var1 <= var2</td></tr>
+    <tr><td><tt>uge</tt></td><td>true</td><td>var1 >= var2</td></tr>
+    <tr><td><tt>o</tt></td><td>false</td><td>always</td></tr>
+    <tr><td><tt>u</tt></td><td>true</td><td>never</td></tr>
+    <tr><td><tt>true</tt></td><td>true</td><td>always</td></tr>
+    <tr><td><tt>false</tt></td><td>false</td><td>never</td></tr>
+  </tbody>
+</table>
+
+<h5>Example:</h5>
+<pre>  <result> = vsetfp eq <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = false, false</i>
+  <result> = vsetfp ne <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = true, true</i>
+  <result> = vsetfp lt <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = true, false</i>
+  <result> = vsetfp gt <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = false, true</i>
+  <result> = vsetfp le <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = true, false</i>
+  <result> = vsetfp ge <2 x float> <float 0.0, float 1.0>, <float 1.0, float 0.0>      <i>; yields {<2 x bool>}:result = false, true</i>
+</pre>
+</div>
+
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+   <a name="i_vselect">'<tt>vselect</tt>' Instruction</a>
+</div>
+
+<div class="doc_text">
+
+<h5>Syntax:</h5>
+
+<pre>
+  <result> = vselect <n x bool> <cond>, <n x <ty>> <val1>, <n x <ty>> <val2> <i>; yields <n x <ty>></i>
+</pre>
+
+<h5>Overview:</h5>
+
+<p>
+The '<tt>vselect</tt>' instruction chooses one value at each position
+of a vector based on a condition.
+</p>
+
+
+<h5>Arguments:</h5>
+
+<p>
+The '<tt>vselect</tt>' instruction requires a <a
+href="#t_packed">packed</a> <tt>bool</tt> value indicating the
+condition at each vector position, and two values of the same packed
+type.  All three operands must have the same length.  The type of the
+result is the same as the type of the two value operands.</p>
+
+<h5>Semantics:</h5>
+
+<p>
+At each position where the <tt>bool</tt> vector is true, that position
+of the result gets its value from the first value argument; otherwise,
+it gets its value from the second value argument.
+</p>
+
+<h5>Example:</h5>
+
+<pre>
+  %X = vselect bool <2 x bool> <bool true, bool false>, <2 x ubyte> <ubyte 17, ubyte 17>, 
+    <2 x ubyte> <ubyte 42, ubyte 42>      <i>; yields <2 x ubyte>:17, 42</i>
+</pre>
+</div>
+
+
+
 <!-- ======================================================================= -->
 <div class="doc_subsection"> 
   <a name="memoryops">Memory Access Operations</a>
@@ -3626,7 +3817,7 @@
 
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2006/04/14 19:07:42 $
+  Last modified: $Date: 2006/04/14 19:24:33 $
 </address>
 </body>
 </html>






More information about the llvm-commits mailing list