<h5>Syntax:</h5>
<pre>
- <result> = add <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<h5>Syntax:</h5>
<pre>
- <result> = sub <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = mul <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>mul</tt>' instruction returns the product of its two
</a></div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = udiv <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = udiv <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>udiv</tt>' instruction returns the quotient of its two
<div class="doc_text">
<h5>Syntax:</h5>
<pre>
- <result> = sdiv <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = sdiv <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>
- <result> = fdiv <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = fdiv <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = urem <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = urem <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>urem</tt>' instruction returns the remainder from the
<h5>Syntax:</h5>
<pre>
- <result> = srem <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = srem <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<h5>Semantics:</h5>
<p>This instruction returns the <i>remainder</i> of a division (where the result
-has the same sign as the dividend, <tt>var1</tt>), not the <i>modulo</i>
-operator (where the result has the same sign as the divisor, <tt>var2</tt>) of
+has the same sign as the dividend, <tt>op1</tt>), not the <i>modulo</i>
+operator (where the result has the same sign as the divisor, <tt>op2</tt>) of
a value. For more information about the difference, see <a
href="http://mathforum.org/dr.math/problems/anne.4.28.99.html">The
Math Forum</a>. For a table of how this is implemented in various languages,
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = frem <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = frem <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>frem</tt>' instruction returns the remainder from the
Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = shl <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = shl <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>Both arguments to the '<tt>shl</tt>' instruction must be the same <a
href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
-type. '<tt>var2</tt>' is treated as an unsigned value.</p>
+type. '<tt>op2</tt>' is treated as an unsigned value.</p>
<h5>Semantics:</h5>
-<p>The value produced is <tt>var1</tt> * 2<sup><tt>var2</tt></sup> mod 2<sup>n</sup>,
-where n is the width of the result. If <tt>var2</tt> is (statically or dynamically) negative or
-equal to or larger than the number of bits in <tt>var1</tt>, the result is undefined.</p>
+<p>The value produced is <tt>op1</tt> * 2<sup><tt>op2</tt></sup> mod 2<sup>n</sup>,
+where n is the width of the result. If <tt>op2</tt> is (statically or dynamically) negative or
+equal to or larger than the number of bits in <tt>op1</tt>, the result is undefined.</p>
<h5>Example:</h5><pre>
<result> = shl i32 4, %var <i>; yields {i32}: 4 << %var</i>
Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = lshr <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = lshr <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<h5>Arguments:</h5>
<p>Both arguments to the '<tt>lshr</tt>' instruction must be the same
<a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
-type. '<tt>var2</tt>' is treated as an unsigned value.</p>
+type. '<tt>op2</tt>' is treated as an unsigned value.</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. 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>
+shift. If <tt>op2</tt> is (statically or dynamically) equal to or larger than
+the number of bits in <tt>op1</tt>, the result is undefined.</p>
<h5>Example:</h5>
<pre>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = ashr <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = ashr <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<h5>Arguments:</h5>
<p>Both arguments to the '<tt>ashr</tt>' instruction must be the same
<a href="#t_integer">integer</a> or <a href="#t_vector">vector</a> of integer
-type. '<tt>var2</tt>' is treated as an unsigned value.</p>
+type. '<tt>op2</tt>' is treated as an unsigned value.</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>. 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.
+of <tt>op1</tt>. If <tt>op2</tt> is (statically or dynamically) equal to or
+larger than the number of bits in <tt>op1</tt>, the result is undefined.
</p>
<h5>Example:</h5>
<h5>Syntax:</h5>
<pre>
- <result> = and <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+ <result> = and <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<div class="doc_subsubsection"> <a name="i_or">'<tt>or</tt>' Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = or <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = or <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>or</tt>' instruction returns the bitwise logical inclusive
Instruction</a> </div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = xor <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = xor <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>xor</tt>' instruction returns the bitwise logical exclusive
</div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = icmp <cond> <ty> <var1>, <var2> <i>; yields {i1}:result</i>
+<pre> <result> = icmp <cond> <ty> <op1>, <op2> <i>; yields {i1}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>icmp</tt>' instruction returns a boolean value based on comparison
<p>The remaining two arguments must be <a href="#t_integer">integer</a> or
<a href="#t_pointer">pointer</a> typed. They must also be identical types.</p>
<h5>Semantics:</h5>
-<p>The '<tt>icmp</tt>' compares <tt>var1</tt> and <tt>var2</tt> according to
+<p>The '<tt>icmp</tt>' compares <tt>op1</tt> and <tt>op2</tt> according to
the condition code given as <tt>cond</tt>. The comparison performed always
yields a <a href="#t_primitive">i1</a> result, as follows:
<ol>
<li><tt>ne</tt>: yields <tt>true</tt> if the operands are unequal,
<tt>false</tt> otherwise. No sign interpretation is necessary or performed.
<li><tt>ugt</tt>: interprets the operands as unsigned values and yields
- <tt>true</tt> if <tt>var1</tt> is greater than <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is greater than <tt>op2</tt>.</li>
<li><tt>uge</tt>: interprets the operands as unsigned values and yields
- <tt>true</tt> if <tt>var1</tt> is greater than or equal to <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
<li><tt>ult</tt>: interprets the operands as unsigned values and yields
- <tt>true</tt> if <tt>var1</tt> is less than <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is less than <tt>op2</tt>.</li>
<li><tt>ule</tt>: interprets the operands as unsigned values and yields
- <tt>true</tt> if <tt>var1</tt> is less than or equal to <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
<li><tt>sgt</tt>: interprets the operands as signed values and yields
- <tt>true</tt> if <tt>var1</tt> is greater than <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is greater than <tt>op2</tt>.</li>
<li><tt>sge</tt>: interprets the operands as signed values and yields
- <tt>true</tt> if <tt>var1</tt> is greater than or equal to <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
<li><tt>slt</tt>: interprets the operands as signed values and yields
- <tt>true</tt> if <tt>var1</tt> is less than <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is less than <tt>op2</tt>.</li>
<li><tt>sle</tt>: interprets the operands as signed values and yields
- <tt>true</tt> if <tt>var1</tt> is less than or equal to <tt>var2</tt>.</li>
+ <tt>true</tt> if <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
</ol>
<p>If the operands are <a href="#t_pointer">pointer</a> typed, the pointer
values are compared as if they were integers.</p>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = fcmp <cond> <ty> <var1>, <var2> <i>; yields {i1}:result</i>
+<pre> <result> = fcmp <cond> <ty> <op1>, <op2> <i>; yields {i1}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>fcmp</tt>' instruction returns a boolean value based on comparison
<a href="#t_floating">floating point</a> typed. They must have identical
types.</p>
<h5>Semantics:</h5>
-<p>The '<tt>fcmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt>
+<p>The '<tt>fcmp</tt>' instruction compares <tt>op1</tt> and <tt>op2</tt>
according to the condition code given as <tt>cond</tt>. The comparison performed
always yields a <a href="#t_primitive">i1</a> result, as follows:
<ol>
<li><tt>false</tt>: always yields <tt>false</tt>, regardless of operands.</li>
<li><tt>oeq</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is equal to <tt>op2</tt>.</li>
<li><tt>ogt</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is greather than <tt>var2</tt>.</li>
+ <tt>op1</tt> is greather than <tt>op2</tt>.</li>
<li><tt>oge</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is greater than or equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
<li><tt>olt</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is less than <tt>var2</tt>.</li>
+ <tt>op1</tt> is less than <tt>op2</tt>.</li>
<li><tt>ole</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is less than or equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
<li><tt>one</tt>: yields <tt>true</tt> if both operands are not a QNAN and
- <tt>var1</tt> is not equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is not equal to <tt>op2</tt>.</li>
<li><tt>ord</tt>: yields <tt>true</tt> if both operands are not a QNAN.</li>
<li><tt>ueq</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is equal to <tt>op2</tt>.</li>
<li><tt>ugt</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is greater than <tt>var2</tt>.</li>
+ <tt>op1</tt> is greater than <tt>op2</tt>.</li>
<li><tt>uge</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is greater than or equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is greater than or equal to <tt>op2</tt>.</li>
<li><tt>ult</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is less than <tt>var2</tt>.</li>
+ <tt>op1</tt> is less than <tt>op2</tt>.</li>
<li><tt>ule</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is less than or equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is less than or equal to <tt>op2</tt>.</li>
<li><tt>une</tt>: yields <tt>true</tt> if either operand is a QNAN or
- <tt>var1</tt> is not equal to <tt>var2</tt>.</li>
+ <tt>op1</tt> is not equal to <tt>op2</tt>.</li>
<li><tt>uno</tt>: yields <tt>true</tt> if either operand is a QNAN.</li>
<li><tt>true</tt>: always yields <tt>true</tt>, regardless of operands.</li>
</ol>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = vicmp <cond> <ty> <var1>, <var2> <i>; yields {ty}:result</i>
+<pre> <result> = vicmp <cond> <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>The '<tt>vicmp</tt>' instruction returns an integer vector value based on
<p>The remaining two arguments must be <a href="#t_vector">vector</a> of
<a href="#t_integer">integer</a> typed. They must also be identical types.</p>
<h5>Semantics:</h5>
-<p>The '<tt>vicmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt>
+<p>The '<tt>vicmp</tt>' instruction compares <tt>op1</tt> and <tt>op2</tt>
according to the condition code given as <tt>cond</tt>. The comparison yields a
<a href="#t_vector">vector</a> of <a href="#t_integer">integer</a> result, of
identical type as the values being compared. The most significant bit in each
</div>
<div class="doc_text">
<h5>Syntax:</h5>
-<pre> <result> = vfcmp <cond> <ty> <var1>, <var2></pre>
+<pre> <result> = vfcmp <cond> <ty> <op1>, <op2></pre>
<h5>Overview:</h5>
<p>The '<tt>vfcmp</tt>' instruction returns an integer vector value based on
element-wise comparison of its two floating point vector operands. The output
<a href="#t_floating">floating point</a> typed. They must also be identical
types.</p>
<h5>Semantics:</h5>
-<p>The '<tt>vfcmp</tt>' instruction compares <tt>var1</tt> and <tt>var2</tt>
+<p>The '<tt>vfcmp</tt>' instruction compares <tt>op1</tt> and <tt>op2</tt>
according to the condition code given as <tt>cond</tt>. The comparison yields a
<a href="#t_vector">vector</a> of <a href="#t_integer">integer</a> result, with
an identical number of elements as the values being compared, and each element