Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2930

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Llvm.AbsSyn</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Llvm-AbsSyn.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Llvm.AbsSyn</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The LLVM abstract syntax.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:LlvmBlockId">LlvmBlockId</a> = <a href="Unique.html#t:Unique">Unique</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmBlock">LlvmBlock</a>  = <a href="#v:LlvmBlock">LlvmBlock</a> {<ul class="subs"><li><a href="#v:blockLabel">blockLabel</a> :: <a href="Llvm-AbsSyn.html#t:LlvmBlockId">LlvmBlockId</a></li><li><a href="#v:blockStmts">blockStmts</a> :: [<a href="Llvm-AbsSyn.html#t:LlvmStatement">LlvmStatement</a>]</li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:LlvmBlocks">LlvmBlocks</a> = [<a href="Llvm-AbsSyn.html#t:LlvmBlock">LlvmBlock</a>]</li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmModule">LlvmModule</a>  = <a href="#v:LlvmModule">LlvmModule</a> {<ul class="subs"><li><a href="#v:modComments">modComments</a> :: [<a href="Llvm-Types.html#t:LMString">LMString</a>]</li><li><a href="#v:modAliases">modAliases</a> :: [<a href="Llvm-Types.html#t:LlvmAlias">LlvmAlias</a>]</li><li><a href="#v:modGlobals">modGlobals</a> :: [<a href="Llvm-Types.html#t:LMGlobal">LMGlobal</a>]</li><li><a href="#v:modFwdDecls">modFwdDecls</a> :: <a href="Llvm-Types.html#t:LlvmFunctionDecls">LlvmFunctionDecls</a></li><li><a href="#v:modFuncs">modFuncs</a> :: <a href="Llvm-AbsSyn.html#t:LlvmFunctions">LlvmFunctions</a></li></ul>}</li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmFunction">LlvmFunction</a>  = <a href="#v:LlvmFunction">LlvmFunction</a> {<ul class="subs"><li><a href="#v:funcDecl">funcDecl</a> :: <a href="Llvm-Types.html#t:LlvmFunctionDecl">LlvmFunctionDecl</a></li><li><a href="#v:funcArgs">funcArgs</a> :: [<a href="Llvm-Types.html#t:LMString">LMString</a>]</li><li><a href="#v:funcAttrs">funcAttrs</a> :: [<a href="Llvm-Types.html#t:LlvmFuncAttr">LlvmFuncAttr</a>]</li><li><a href="#v:funcSect">funcSect</a> :: <a href="Llvm-Types.html#t:LMSection">LMSection</a></li><li><a href="#v:funcBody">funcBody</a> :: <a href="Llvm-AbsSyn.html#t:LlvmBlocks">LlvmBlocks</a></li></ul>}</li><li class="src short"><span class="keyword">type</span> <a href="#t:LlvmFunctions">LlvmFunctions</a> = [<a href="Llvm-AbsSyn.html#t:LlvmFunction">LlvmFunction</a>]</li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmSyncOrdering">LlvmSyncOrdering</a> <ul class="subs"><li>= <a href="#v:SyncUnord">SyncUnord</a>  </li><li>| <a href="#v:SyncMonotonic">SyncMonotonic</a>  </li><li>| <a href="#v:SyncAcquire">SyncAcquire</a>  </li><li>| <a href="#v:SyncRelease">SyncRelease</a>  </li><li>| <a href="#v:SyncAcqRel">SyncAcqRel</a>  </li><li>| <a href="#v:SyncSeqCst">SyncSeqCst</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmStatement">LlvmStatement</a> <ul class="subs"><li>= <a href="#v:Assignment">Assignment</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a>  </li><li>| <a href="#v:Fence">Fence</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="Llvm-AbsSyn.html#t:LlvmSyncOrdering">LlvmSyncOrdering</a>  </li><li>| <a href="#v:Branch">Branch</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:BranchIf">BranchIf</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:Comment">Comment</a> [<a href="Llvm-Types.html#t:LMString">LMString</a>]  </li><li>| <a href="#v:MkLabel">MkLabel</a> <a href="Llvm-AbsSyn.html#t:LlvmBlockId">LlvmBlockId</a>  </li><li>| <a href="#v:Store">Store</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:Switch">Switch</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [(<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>, <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)]  </li><li>| <a href="#v:Return">Return</a> (<a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)  </li><li>| <a href="#v:Unreachable">Unreachable</a>  </li><li>| <a href="#v:Expr">Expr</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a>  </li><li>| <a href="#v:Nop">Nop</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:LlvmExpression">LlvmExpression</a> <ul class="subs"><li>= <a href="#v:Alloca">Alloca</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>  </li><li>| <a href="#v:LlvmOp">LlvmOp</a> <a href="Llvm-Types.html#t:LlvmMachOp">LlvmMachOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:Compare">Compare</a> <a href="Llvm-Types.html#t:LlvmCmpOp">LlvmCmpOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:Malloc">Malloc</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>  </li><li>| <a href="#v:Load">Load</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>  </li><li>| <a href="#v:GetElemPtr">GetElemPtr</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>]  </li><li>| <a href="#v:Cast">Cast</a> <a href="Llvm-Types.html#t:LlvmCastOp">LlvmCastOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a>  </li><li>| <a href="#v:Call">Call</a> <a href="Llvm-Types.html#t:LlvmCallType">LlvmCallType</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>] [<a href="Llvm-Types.html#t:LlvmFuncAttr">LlvmFuncAttr</a>]  </li><li>| <a href="#v:Phi">Phi</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> [(<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>, <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)]  </li><li>| <a href="#v:Asm">Asm</a> <a href="Llvm-Types.html#t:LMString">LMString</a> <a href="Llvm-Types.html#t:LMString">LMString</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>] <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>  </li></ul></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:LlvmBlockId" class="def">LlvmBlockId</a> = <a href="Unique.html#t:Unique">Unique</a></p><div class="doc"><p>Block labels
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmBlock" class="def">LlvmBlock</a>  </p><div class="doc"><p>A block of LLVM code.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LlvmBlock" class="def">LlvmBlock</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:blockLabel" class="def">blockLabel</a> :: <a href="Llvm-AbsSyn.html#t:LlvmBlockId">LlvmBlockId</a></dt><dd class="doc"><p>The code label for this block
</p></dd><dt class="src"><a name="v:blockStmts" class="def">blockStmts</a> :: [<a href="Llvm-AbsSyn.html#t:LlvmStatement">LlvmStatement</a>]</dt><dd class="doc"><p>A list of LlvmStatement's representing the code for this block.
 This list must end with a control flow statement.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:LlvmBlocks" class="def">LlvmBlocks</a> = [<a href="Llvm-AbsSyn.html#t:LlvmBlock">LlvmBlock</a>]</p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmModule" class="def">LlvmModule</a>  </p><div class="doc"><p>An LLVM Module. This is a top level container in LLVM.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LlvmModule" class="def">LlvmModule</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:modComments" class="def">modComments</a> :: [<a href="Llvm-Types.html#t:LMString">LMString</a>]</dt><dd class="doc"><p>Comments to include at the start of the module.
</p></dd><dt class="src"><a name="v:modAliases" class="def">modAliases</a> :: [<a href="Llvm-Types.html#t:LlvmAlias">LlvmAlias</a>]</dt><dd class="doc"><p>LLVM Alias type definitions.
</p></dd><dt class="src"><a name="v:modGlobals" class="def">modGlobals</a> :: [<a href="Llvm-Types.html#t:LMGlobal">LMGlobal</a>]</dt><dd class="doc"><p>Global variables to include in the module.
</p></dd><dt class="src"><a name="v:modFwdDecls" class="def">modFwdDecls</a> :: <a href="Llvm-Types.html#t:LlvmFunctionDecls">LlvmFunctionDecls</a></dt><dd class="doc"><p>LLVM Functions used in this module but defined in other modules.
</p></dd><dt class="src"><a name="v:modFuncs" class="def">modFuncs</a> :: <a href="Llvm-AbsSyn.html#t:LlvmFunctions">LlvmFunctions</a></dt><dd class="doc"><p>LLVM Functions defined in this module.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmFunction" class="def">LlvmFunction</a>  </p><div class="doc"><p>An LLVM Function
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LlvmFunction" class="def">LlvmFunction</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:funcDecl" class="def">funcDecl</a> :: <a href="Llvm-Types.html#t:LlvmFunctionDecl">LlvmFunctionDecl</a></dt><dd class="doc"><p>The signature of this declared function.
</p></dd><dt class="src"><a name="v:funcArgs" class="def">funcArgs</a> :: [<a href="Llvm-Types.html#t:LMString">LMString</a>]</dt><dd class="doc"><p>The functions arguments
</p></dd><dt class="src"><a name="v:funcAttrs" class="def">funcAttrs</a> :: [<a href="Llvm-Types.html#t:LlvmFuncAttr">LlvmFuncAttr</a>]</dt><dd class="doc"><p>The function attributes.
</p></dd><dt class="src"><a name="v:funcSect" class="def">funcSect</a> :: <a href="Llvm-Types.html#t:LMSection">LMSection</a></dt><dd class="doc"><p>The section to put the function into,
</p></dd><dt class="src"><a name="v:funcBody" class="def">funcBody</a> :: <a href="Llvm-AbsSyn.html#t:LlvmBlocks">LlvmBlocks</a></dt><dd class="doc"><p>The body of the functions.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:LlvmFunctions" class="def">LlvmFunctions</a> = [<a href="Llvm-AbsSyn.html#t:LlvmFunction">LlvmFunction</a>]</p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmSyncOrdering" class="def">LlvmSyncOrdering</a>  </p><div class="doc"><p>LLVM ordering types for synchronization purposes. (Introduced in LLVM
 3.0). Please see the LLVM documentation for a better description.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SyncUnord" class="def">SyncUnord</a></td><td class="doc"><p>Some partial order of operations exists.
</p></td></tr><tr><td class="src"><a name="v:SyncMonotonic" class="def">SyncMonotonic</a></td><td class="doc"><p>A single total order for operations at a single address exists.
</p></td></tr><tr><td class="src"><a name="v:SyncAcquire" class="def">SyncAcquire</a></td><td class="doc"><p>Acquire synchronization operation.
</p></td></tr><tr><td class="src"><a name="v:SyncRelease" class="def">SyncRelease</a></td><td class="doc"><p>Release synchronization operation.
</p></td></tr><tr><td class="src"><a name="v:SyncAcqRel" class="def">SyncAcqRel</a></td><td class="doc"><p>Acquire + Release synchronization operation.
</p></td></tr><tr><td class="src"><a name="v:SyncSeqCst" class="def">SyncSeqCst</a></td><td class="doc"><p>Full sequential Consistency operation.
</p></td></tr></table></div><div class="subs instances"><p id="control.i:LlvmSyncOrdering" class="caption collapser" onclick="toggleSection('i:LlvmSyncOrdering')">Instances</p><div id="section.i:LlvmSyncOrdering" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Llvm-AbsSyn.html#t:LlvmSyncOrdering">LlvmSyncOrdering</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Llvm-AbsSyn.html#t:LlvmSyncOrdering">LlvmSyncOrdering</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmStatement" class="def">LlvmStatement</a>  </p><div class="doc"><p>Llvm Statements
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Assignment" class="def">Assignment</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a></td><td class="doc"><p>Assign an expression to an variable:
      * dest:   Variable to assign to
      * source: Source expression
</p></td></tr><tr><td class="src"><a name="v:Fence" class="def">Fence</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="Llvm-AbsSyn.html#t:LlvmSyncOrdering">LlvmSyncOrdering</a></td><td class="doc"><p>Memory fence operation
</p></td></tr><tr><td class="src"><a name="v:Branch" class="def">Branch</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Always branch to the target label
</p></td></tr><tr><td class="src"><a name="v:BranchIf" class="def">BranchIf</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Branch to label targetTrue if cond is true otherwise to label targetFalse
      * cond:        condition that will be tested, must be of type i1
      * targetTrue:  label to branch to if cond is true
      * targetFalse: label to branch to if cond is false
</p></td></tr><tr><td class="src"><a name="v:Comment" class="def">Comment</a> [<a href="Llvm-Types.html#t:LMString">LMString</a>]</td><td class="doc"><p>Comment
    Plain comment.
</p></td></tr><tr><td class="src"><a name="v:MkLabel" class="def">MkLabel</a> <a href="Llvm-AbsSyn.html#t:LlvmBlockId">LlvmBlockId</a></td><td class="doc"><p>Set a label on this position.
      * name: Identifier of this label, unique for this module
</p></td></tr><tr><td class="src"><a name="v:Store" class="def">Store</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Store variable value in pointer ptr. If value is of type t then ptr must
    be of type t*.
      * value: Variable/Constant to store.
      * ptr:   Location to store the value in
</p></td></tr><tr><td class="src"><a name="v:Switch" class="def">Switch</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [(<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>, <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)]</td><td class="doc"><p>Mutliway branch
      * scrutinee: Variable or constant which must be of integer type that is
                   determines which arm is chosen.
      * def:       The default label if there is no match in target.
      * target:    A list of (value,label) where the value is an integer
                   constant and label the corresponding label to jump to if the
                   scrutinee matches the value.
</p></td></tr><tr><td class="src"><a name="v:Return" class="def">Return</a> (<a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)</td><td class="doc"><p>Return a result.
      * result: The variable or constant to return
</p></td></tr><tr><td class="src"><a name="v:Unreachable" class="def">Unreachable</a></td><td class="doc"><p>An instruction for the optimizer that the code following is not reachable
</p></td></tr><tr><td class="src"><a name="v:Expr" class="def">Expr</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a></td><td class="doc"><p>Raise an expression to a statement (if don't want result or want to use
    Llvm unnamed values.
</p></td></tr><tr><td class="src"><a name="v:Nop" class="def">Nop</a></td><td class="doc"><p>A nop LLVM statement. Useful as its often more efficient to use this
    then to wrap LLvmStatement in a Just or [].
</p></td></tr></table></div><div class="subs instances"><p id="control.i:LlvmStatement" class="caption collapser" onclick="toggleSection('i:LlvmStatement')">Instances</p><div id="section.i:LlvmStatement" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Llvm-AbsSyn.html#t:LlvmStatement">LlvmStatement</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Llvm-AbsSyn.html#t:LlvmStatement">LlvmStatement</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LlvmExpression" class="def">LlvmExpression</a>  </p><div class="doc"><p>Llvm Expressions
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Alloca" class="def">Alloca</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>Allocate amount * sizeof(tp) bytes on the stack
      * tp:     LlvmType to reserve room for
      * amount: The nr of tp's which must be allocated
</p></td></tr><tr><td class="src"><a name="v:LlvmOp" class="def">LlvmOp</a> <a href="Llvm-Types.html#t:LlvmMachOp">LlvmMachOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Perform the machine operator op on the operands left and right
      * op:    operator
      * left:  left operand
      * right: right operand
</p></td></tr><tr><td class="src"><a name="v:Compare" class="def">Compare</a> <a href="Llvm-Types.html#t:LlvmCmpOp">LlvmCmpOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Perform a compare operation on the operands left and right
      * op:    operator
      * left:  left operand
      * right: right operand
</p></td></tr><tr><td class="src"><a name="v:Malloc" class="def">Malloc</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>Allocate amount * sizeof(tp) bytes on the heap
      * tp:     LlvmType to reserve room for
      * amount: The nr of tp's which must be allocated
</p></td></tr><tr><td class="src"><a name="v:Load" class="def">Load</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a></td><td class="doc"><p>Load the value at location ptr
</p></td></tr><tr><td class="src"><a name="v:GetElemPtr" class="def">GetElemPtr</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>]</td><td class="doc"><p>Navigate in an structure, selecting elements
      * inbound: Is the pointer inbounds? (computed pointer doesn't overflow)
      * ptr:     Location of the structure
      * indexes: A list of indexes to select the correct value.
</p></td></tr><tr><td class="src"><a name="v:Cast" class="def">Cast</a> <a href="Llvm-Types.html#t:LlvmCastOp">LlvmCastOp</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a></td><td class="doc"><p>Cast the variable from to the to type. This is an abstraction of three
     cast operators in Llvm, inttoptr, prttoint and bitcast.
       * cast: Cast type
       * from: Variable to cast
       * to:   type to cast to
</p></td></tr><tr><td class="src"><a name="v:Call" class="def">Call</a> <a href="Llvm-Types.html#t:LlvmCallType">LlvmCallType</a> <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>] [<a href="Llvm-Types.html#t:LlvmFuncAttr">LlvmFuncAttr</a>]</td><td class="doc"><p>Call a function. The result is the value of the expression.
      * tailJumps: CallType to signal if the function should be tail called
      * fnptrval:  An LLVM value containing a pointer to a function to be
                   invoked. Can be indirect. Should be LMFunction type.
      * args:      Concrete arguments for the parameters
      * attrs:     A list of function attributes for the call. Only NoReturn,
                   NoUnwind, ReadOnly and ReadNone are valid here.
</p></td></tr><tr><td class="src"><a name="v:Phi" class="def">Phi</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> [(<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>, <a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>)]</td><td class="doc"><p>Merge variables from different basic blocks which are predecessors of this
    basic block in a new variable of type tp.
      * tp:         type of the merged variable, must match the types of the
                    predecessor variables.
      * precessors: A list of variables and the basic block that they originate
                    from.
</p></td></tr><tr><td class="src"><a name="v:Asm" class="def">Asm</a> <a href="Llvm-Types.html#t:LMString">LMString</a> <a href="Llvm-Types.html#t:LMString">LMString</a> <a href="Llvm-Types.html#t:LlvmType">LlvmType</a> [<a href="Llvm-Types.html#t:LlvmVar">LlvmVar</a>] <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>Inline assembly expression. Syntax is very similar to the style used by GCC.
      * assembly:   Actual inline assembly code.
      * contraints: Operand constraints.
      * return ty:  Return type of function.
      * vars:       Any variables involved in the assembly code.
      * sideeffect: Does the expression have side effects not visible from the
                    constraints list.
      * alignstack: Should the stack be conservatively aligned before this
                    expression is executed.
</p></td></tr></table></div><div class="subs instances"><p id="control.i:LlvmExpression" class="caption collapser" onclick="toggleSection('i:LlvmExpression')">Instances</p><div id="section.i:LlvmExpression" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Llvm-AbsSyn.html#t:LlvmExpression">LlvmExpression</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>