This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
<!DOCTYPE html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Binop (infer.IR.Binop)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.1"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">IR</a>» Binop</nav><h1>Module <code>IR.Binop</code></h1></header><aside><p>The Smallfoot Intermediate Language: Binary Operators</p></aside><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><tableclass="variant"><trid="type-t.PlusA"class="anchored"><tdclass="def constructor"><ahref="#type-t.PlusA"class="anchor"></a><code>| </code><code><spanclass="constructor">PlusA</span><spanclass="keyword">of</span><span><ahref="../Typ/index.html#type-ikind">Typ.ikind</a> option</span></code></td><tdclass="doc"><p>arithmetic +</p></td></tr><trid="type-t.PlusPI"class="anchored"><tdclass="def constructor"><ahref="#type-t.PlusPI"class="anchor"></a><code>| </code><code><spanclass="constructor">PlusPI</span></code></td><tdclass="doc"><p>pointer + integer</p></td></tr><trid="type-t.MinusA"class="anchored"><tdclass="def constructor"><ahref="#type-t.MinusA"class="anchor"></a><code>| </code><code><spanclass="constructor">MinusA</span><spanclass="keyword">of</span><span><ahref="../Typ/index.html#type-ikind">Typ.ikind</a> option</span></code></td><tdclass="doc"><p>arithmetic -</p></td></tr><trid="type-t.MinusPI"class="anchored"><tdclass="def constructor"><ahref="#type-t.MinusPI"class="anchor"></a><code>| </code><code><spanclass="constructor">MinusPI</span></code></td><tdclass="doc"><p>pointer - integer</p></td></tr><trid="type-t.MinusPP"class="anchored"><tdclass="def constructor"><ahref="#type-t.MinusPP"class="anchor"></a><code>| </code><code><spanclass="constructor">MinusPP</span></code></td><tdclass="doc"><p>pointer - pointer</p></td></tr><trid="type-t.Mult"class="anchored"><tdclass="def constructor"><ahref="#type-t.Mult"class="anchor"></a><code>| </code><code><spanclass="constructor">Mult</span><spanclass="keyword">of</span><span><ahref="../Typ/index.html#type-ikind">Typ.ikind</a> option</span></code></td><tdclass="doc"><p>*</p></td></tr><trid="type-t.Div"class="anchored"><tdclass="def constructor"><ahref="#type-t.Div"class="anchor"></a><code>| </code><code><spanclass="constructor">Div</span></code></td><tdclass="doc"><p>/</p></td></tr><trid="type-t.Mod"class="anchored"><tdclass="def constructor"><ahref="#type-t.Mod"class="anchor"></a><code>| </code><code><spanclass="constructor">Mod</span></code></td><tdclass="doc"><p>%</p></td></tr><trid="type-t.Shiftlt"class="anchored"><tdclass="def constructor"><ahref="#type-t.Shiftlt"class="anchor"></a><code>| </code><code><spanclass="constructor">Shiftlt</span></code></td><tdclass="doc"><p>shift left</p></td></tr><trid="type-t.Shiftrt"class="anchored"><tdclass="def constructor"><ahref="#type-t.Shiftrt"class="anchor"></a><code>| </code><code><spanclass="constructor">Shiftrt</span></code></td><tdclass="doc"><p>shift right</p></td></tr><trid="type-t.Lt"class="anchored"><tdclass="def constructor"><ahref="#type-t.Lt"class="anchor"></a><code>| </code><code><spanclass="constructor">Lt</span></code></td><tdclass="doc"><p>< (arithmetic comparison)</p></td></tr><trid="type-t.Gt"class="anchored"><tdclass="def constructor"><ahref="#type-t.Gt"class="anchor"></a><code>| </code><code><spanclass="constructor">Gt</span></code></td><tdclass="doc"><p>> (arithmetic comparison)</p></td></tr><trid="type-t.Le"class="anchored"><tdclass="def constructor"><ahref="#type-t.Le"class="anchor"></a><code>| </code><code><spanclass="constructor">Le</span></code></td><tdclass="doc"><p><= (arithmetic comparison)</p></td></tr><trid="type-t.Ge"class="anchored"><tdclass="def constructor"><ahref="#type-t.Ge"class="anchor"></a><code>| </code><code><spanclass="constructor">Ge</span></code></td><tdclass="doc"><p>>= (arithmetic comparison)</p></td></tr><trid="type-t.Eq"class="anchored"><tdclass="def constructor"><ahref="#type-t.Eq"class="anchor"></a><code>| </code><code><spanclass="constructor">Eq</span></code></td><tdclass="doc"><p>== (arithmetic comparison)</p></td></tr><trid="type-t.Ne"class="anchored"><tdclass="def constructor"><ahref="#type-t.Ne"class="anchor"></a><code>| </code><code><spanclass="constructor">Ne</span></code></td><tdclass="doc"><p>!= (arithmetic comparison)</p></td></tr><trid="type-t.BAnd"class="anchored"><tdclass="def constructor"><ahref="#type-t.BAnd"class="anchor"></a><code>| </code><code><spanclass="constructor">BAnd</span></code></td><tdclass="doc"><p>bitwise and</p></td></tr><trid="type-t.BXor"class="anchored"><tdclass="def constructor"><ahref="#type-t.BXor"class="anchor"></a><code>| </code><code><spanclass="constructor">BXor</span></code></td><tdclass="doc"><p>exclusive-or</p></td></tr><trid="type-t.BOr"class="anchored"><tdclass="def constructor"><ahref="#type-t.BOr"class="anchor"></a><code>| </code><code><spanclass="constructor">BOr</span></code></td><tdclass="doc"><p>inclusive-or</p></td></tr><trid="type-t.LAnd"class="anchored"><tdclass="def constructor"><ahref="#type-t.LAnd"class="anchor"></a><code>| </code><code><spanclass="constructor">LAnd</span></code></td><tdclass="doc"><p>logical and. Does not always evaluate both operands.</p></td></tr><trid="type-t.LOr"class="anchored"><tdclass="def constructor"><ahref="#type-t.LOr"class="anchor"></a><code>| </code><code><spanclass="constructor">LOr</span></code></td><tdclass="doc"><p>logical or. Does not always evaluate both operands.</p></td></tr></table></dt><dd><p>Binary operations</p></dd></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt></dl></div></div></div><dl><dtclass="spec value"id="val-str"><ahref="#val-str"class="anchor"></a><code><spanclass="keyword">val</span> str : <ahref="../../IStdlib/Pp/index.html#type-env">IStdlib.Pp.env</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> string</code></dt><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : <ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.Formatter.t <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-equal"><ahref="#val-equal"class="anchor"></a><code><spanclass="keyword">val</span> equal : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-injective"><ahref="#val-injective"class="anchor"></a><code><spanclass="keyword">val</span> injective : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>This function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".</p></dd></dl><dl><dtclass="spec value"id="val-is_zero_runit"><ahref="#val-is_zero_runit"class="anchor"></a><code><spanclass="keyword">val</span> is_zero_runit : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>This function returns true if 0 is the right unit of <code>binop</code>. The return value false means "don't know".</p></dd></dl><dl><dtclass="spec value"id="val-symmetric"><ahref="#val-symmetric"class="anchor"></a><code><spanclass="keyword">val</span> symmetric : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-t">t</a> option</span></code></dt><dd><p><code>symmetric bop</code> returns' <code>Some bop'</code> if <code>x bop y</code> if and only if <code>y bop' x</code> for all x, y, or <code>None</code> if no such <code>bop'</code> exists</p></dd></dl><dl><dtclass="spec value"id="val-negate"><ahref="#val-negate"class="anchor"></a><code><spanclass="keyword">val</span> negate : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-t">t</a> option</span></code></dt><dd><p><code>negate bop</code> returns' <code>Some bop'</code> if <code>not (x bop y)</code> if and only if <code>x bop' y</code> for all x, y, or <code>None</code> if no such <code>bop'</code> exists</p></dd></dl></div></body></html>