!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c d e f g h i j k l m n o p q r s t u v w x y z{|}~                requires GHC 6.8, LLVM experimentalbos@serpentine.com"Give the type of a sequential type' s elements. .Fill out an array with the types of a function's fixed  parameters. ;Give the number of fixed parameters that a function takes. Give a function's return type. +Indicate whether a function takes varargs. Create a function type. $An integer type of the given width.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     3.   25 641@?>=:0/7  # $!EFDCBA-,%& ~"}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG<;98+*)' (  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&&%$#"!  !"#$%&'()*+,-./0123456789:;<=>??<;0/2*.-:93)('>=87,651+4'()*+,-./0123456789:;<=>?@ABCDEFFEDCBA@@ABCDEFGHHGGH IManage compile passes. JKA module provider is used by the code generator to get access to a module. KType of top level modules. LYFree all storage related to a module. *Note*, this is a dangerous call, since referring V to the module after this call is an error. The reason for the explicit call to free O the module instead of an automatic lifetime management is that modules have a P somewhat complicated ownership. Handing a module to a module provider changes [ the ownership of the module, and the module provider will free the module when necessary. MWrite a module to a file. N&Turn a module into a module provider. OCreate a pass manager. P$Create a pass manager for a module. Q=Add a control flow graph simplification pass to the manager. R0Add a constant propagation pass to the manager. T2Add a global value numbering pass to the manager. 4I !"#$%&J'(K)*+,-LM.N/0123456789:;<=>OPQRSTUVWX?@A2I ! !"#$%&%&J'('(K)*)*+,-LM.N/0123456789:;<=>OPQRSTUVWX?@A BYZCDEFGHI YZCDEFGHI[\\[[\]^_`aa`_^]]^_`a tThe u t  - c b - types represent type level digits that form  a number by, e.g, D1 (D0 (D5 End)). @ On the value level a slightly more palatable form can be used,   D1$D0$D5$End. v"Mark the end of a digit sequence. x<A type level number, i.e., a sequence of type level digits. y.Get the numeric value of a type level number. / This function does not evaluate its argument. bcdefghijklmnopqrstuvwxyxyturspqnolmjkhifgdebcvwbccdeefgghiijkklmmnoopqqrsstuuvwwxy zPointer type. |5Fixed sized vector, the array size is encoded in the n parameter. ~5Fixed sized arrays, the array size is encoded in the n parameter. 128 bit floating point. !Variable sized unsigned integer.  The n parameter should belong to  IsTypeNumber. Variable sized signed integer.  The n parameter should belong to  IsTypeNumber. z{|}~ z{{|}}~ Function type. Types with a fixed size. )Sequence types, i.e., vectors and arrays IFirst class types, i.e., the types that can be passed as arguments, etc. Primitive types. Floating types. Integral types. 5Arithmetic types, i.e., integral and floating types. The > class classifies all types that have an LLVM representation.  ;An enumeration for the kinds of linkage for global values. 7Stand-in functions for streaming fns from BC files !ExternalWeak linkage description #Function to be accessible from DLL !Function to be imported from DLL 2Rename collisions when linking (static functions) /Special purpose, only applies to global arrays 4Keep one copy of named function when linking (weak) 0Keep one copy of function when linking (inline) Externally visible function eA basic block is a sequence of non-branching instructions, terminated by a control flow instruction. 0A function is simply a pointer to the function. Create a new module. 'Create a new explicitely named module. Give the body for a module. )Create a new module with the given body. Create a new named function. Create a new function. Use 3 to create a function with external linkage, since  it needs a known name. _Define a function body. The basic block returned by the function is the function entry point. +Create a new function with the given body. $Create a new named global variable. Create a new global variable. +Give a global variable a (constant) value. %Create and define a global variable. 1JKLMNO1 JJKKLLMNMNOGAcceptable single index to getElementPointer. Acceptable arguments to getElementPointer. 0Acceptable argument to array memory allocation. Acceptable arguments to . 0Acceptable operands to comparison instructions. Always true (always folded) True if unordered or not equal 'True if unordered, less than, or equal True if unordered or less than *True if unordered, greater than, or equal "True if unordered or greater than True if unordered or equal 'True if unordered: isnan(X) | isnan(Y) True if ordered (no nans) )True if ordered and operands are unequal 'True if ordered and less than or equal True if ordered and less than *True if ordered and greater than or equal !True if ordered and greater than True if ordered and equal Always false (always folded) signed less or equal signed less than signed greater or equal signed greater than unsigned less or equal unsigned less than unsigned greater or equal unsigned greater than  not equal equal 8Acceptable arguments to arithmetic binary instructions. Acceptable arguments to the  instruction. {Return from the current function with the given value. Use () as the return value for what would be a void function is C. ]Branch to the first basic block if the boolean is true, otherwise to the second basic block. 1Unconditionally branch to the given basic block. Branch table instruction. ;Unwind the call stack until a function call performed with  is reached. $ I.e., throw a non-local exception. ?Inform the code generator that this code can never be reached. Floating point division. Floating point remainder. Get a value from a vector. .Insert a value into a vector, nondescructive. Permute vector. )Truncate a value to a shorter bit width. &Zero extend a value to a wider width. $Sign extend a value to wider width. !Truncate a floating point value. Extend a floating point value. 7Convert a floating point value to an unsigned integer. 4Convert a floating point value to a signed integer. 7Convert an unsigned integer to a floating point value. 4Convert a signed integer to a floating point value. !Convert a pointer to an integer. !Convert an integer to a pointer. LConvert between to values of the same size by just copying the bit pattern. Compare integers. Compare floating point values. 2Select between two values depending on a boolean. /Call a function with the given arguments. The 8 instruction is variadic, i.e., the number of arguments ! it takes depends on the type of f. )Call a function with exception handling. QJoin several variables (virtual registers) from different basic blocks into one. 8 All of the variables in the list are joined. See also  .  /Add additional inputs to an existing phi node. M The reason for this instruction is that sometimes the structure of the code ^ makes it impossible to have all variables in scope at the point where you need the phi node.  Allocate heap memory.  Allocate heap (array) memory.  Allocate stack memory.  Allocate stack (array) memory. Free heap memory. Load a value from memory. Store a value in memory +Address arithmetic. See LLVM description. ) The index is a nested tuple of the form (i1,(i2,( ... ()))). T (This is without a doubt the most confusing LLVM instruction, but the types help.) Y     W      Print a value. IJKLMNOPQRSTUVWXYZz{|}~K     KLJNIOPM     ~|}z{YZQRSTUVWXThe type of the JITer. 2Create an execution engine for a module provider. PQRST PQPQRST IClass of LLVM function types that can be translated to the corresponding  Haskell type. 3Generate a Haskell function from an LLVM function. ITranslate a function to Haskell code. This is a simplified interface to , the execution engine and module mechanism. Combine   and  .  U !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ   " [ Z  < = X W V U T S R 3 \ ]^_`abcd e e f f g g h h i i j j k k l l m m n n o o p q r r s s t t u u v v w wxyz{|}~QNLK                   "      1          9    ! " # $%&'()P:E* llvm-0.4.0.3 LLVM.FFI.CoreLLVM.FFI.TargetLLVM.FFI.ExecutionEngineLLVM.FFI.Transforms.ScalarLLVM.FFI.BitWriter LLVM.CoreLLVM.FFI.BitReaderLLVM.FFI.AnalysisData.TypeNumbersLLVM.ExecutionEngineLLVM.Core.UtilLLVM.Core.CodeGenMonadLLVM.Core.DataLLVM.Core.TypeLLVM.Core.CodeGenLLVM.Core.InstructionsLLVM.ExecutionEngine.Engine setTailCallremoveInstrAttributeremoveAttribute isTailCalladdInstrAttribute addAttributesetParamAlignmentsetInstrParamAlignmentrunPassManagerrunFunctionPassManagerpositionBuilder opaqueType labelTypeinitializeFunctionPassManagergetPreviousParamgetPreviousInstructiongetPreviousGlobalgetPreviousFunctiongetPreviousBasicBlockgetParamParent getNextParamgetNextInstruction getNextGlobalgetNextFunctiongetNextBasicBlock getLastParamgetLastInstruction getLastGlobalgetLastFunctiongetLastBasicBlockgetInstructionParentgetInsertBlockgetGlobalParent getFirstParamgetFirstInstructiongetFirstGlobalgetFirstFunctiongetFirstBasicBlockgetBasicBlockParentfinalizeFunctionPassManager dumpModuledisposePassManagercreatePassManagercreateFunctionPassManagerconstRealOfStringsizeOf setTargetresolveTypeHandle refineType getVectorSize getTypeKind getTargetgetPointerAddressSpacegetIntTypeWidthgetArrayLengthdisposeTypeHandledisposeMessagedisposeMemoryBuffercreateTypeHandlecreateMemoryBufferWithSTDIN$createMemoryBufferWithContentsOfFileisPackedStructgetStructElementTypescountStructElementTypes structTypesetInstructionCallConvgetInstructionCallConvgetIncomingBlockgetIncomingValue addIncoming countIncomingaddCasebuildShuffleVectorbuildInsertElementbuildExtractElement buildVAArg buildSelect buildCallbuildPhi buildFCmp buildICmp buildBitCast buildIntToPtr buildPtrToInt buildFPExt buildFPTrunc buildSIToFP buildUIToFP buildFPToSI buildFPToUI buildSExt buildZExt buildTruncbuildGEP buildStore buildLoad buildFreebuildArrayAlloca buildAllocabuildArrayMalloc buildMallocbuildNotbuildNegbuildXorbuildOrbuildAnd buildAShr buildLShrbuildShl buildFRem buildSRem buildURem buildFDiv buildSDiv buildUDivbuildMulbuildSubbuildAddbuildUnreachable buildUnwind buildInvoke buildSwitch buildCondBrbuildBrbuildRet buildRetVoid positionAtEndpositionBeforedisposeBuilder createBuilderdeleteBasicBlockinsertBasicBlockappendBasicBlockgetEntryBasicBlockgetBasicBlockscountBasicBlocksvalueAsBasicBlockvalueIsBasicBlockbasicBlockAsValueconstShuffleVectorconstInsertElementconstExtractElement constSelect constBitCast constIntToPtr constPtrToInt constFPToSI constFPToUI constSIToFP constUIToFP constFPExt constFPTrunc constZExt constSExt constTruncconstGEP constAShr constLShrconstShl constFCmp constICmpconstXorconstOrconstAnd constFRem constSRem constURem constFDiv constSDiv constUDivconstMulconstSubconstAddconstNotconstNeg constVector constStruct constString constRealconstInt setAlignment getAlignment setVisibility getVisibility setSection getSection setLinkage getLinkage isDeclarationsetGCgetGCsetFunctionCallConvgetFunctionCallConvgetIntrinsicID getParamsgetParam countParamsdeleteFunction addFunctiongetNamedFunctionisUndefisNullgetUndef isConstant constNull constArray constAllOnes dumpValue setValueName getValueNametypeOfsetGlobalConstantisGlobalConstantsetThreadLocal isThreadLocalgetInitializergetNamedGlobalsetInitializer deleteGlobal addGlobalgetElementTypedeleteTypeName addTypeName vectorType pointerType arrayType getParamTypescountParamTypes getReturnTypeisFunctionVarArg functionTypevoidType ppcFP128Type fp128Type x86FP80Type doubleType floatType integerType int64Type int32Type int16Typeint8Typeint1TypedisposeModuleProvider%createModuleProviderForExistingModule setDataLayout getDataLayout disposeModulemoduleCreateWithNamePassManagerRef PassManagerMemoryBufferRef MemoryBuffer BuilderRefBuilder BasicBlockRef BasicBlock VisibilityLinkageCallingConvention X86FastCall X86StdCallColdFastCValueRefValueTypeRefTypeModuleProviderRefModuleProvider ModuleRefModulefromCallingConventiontoCallingConventionstoreSizeOfTypesizeOfTypeInBitspreferredAlignmentOfTypepreferredAlignmentOfGlobal pointerSizeoffsetOfElementinvalidateStructLayout intPtrTypeelementAtOffsetdisposeTargetDatacreateTargetDatacopyStringRepOfTargetDatacallFrameAlignmentOfType byteOrder addTargetData aBISizeOfTypeaBIAlignmentOfType TargetDataRef TargetData ByteOrderingaddGlobalMappinggetExecutionEngineTargetDatarunFunctionAsMainremoveModuleProvidergenericValueToPointergenericValueIntWidthfreeMachineCodeForFunction findFunctioncreateJITCompilercreateInterpretercreateGenericValueOfPointeraddModuleProvider runFunctiondisposeGenericValuegenericValueToFloatcreateGenericValueOfFloatgenericValueToIntcreateGenericValueOfIntrunStaticDestructorsrunStaticConstructorsdisposeExecutionEnginecreateExecutionEngineGenericValueRef GenericValueExecutionEngineaddReassociatePassaddPromoteMemoryToRegisterPassaddInstructionCombiningPass addGVNPassaddDemoteMemoryToRegisterPassaddConstantPropagationPassaddCFGSimplificationPasswriteBitcodeToFileHandlewriteBitcodeToFile destroyModuleCodeGenFunction CodeGenModule parseBitcodegetBitcodeModuleProviderviewFunctionCFGOnlyviewFunctionCFG verifyModuleverifyFunctionVerifierFailureActionD9D8D7D6D5D4D3D2D1D0End IsTypeNumber typeNumberPtrVectorArrayFP128WordNIntN IsFunctionIsSized IsSequence IsFirstClass IsPrimitive IsFloating IsInteger IsArithmeticIsTypetypeRef GhostLinkageExternalWeakLinkageDLLExportLinkageDLLImportLinkageInternalLinkageAppendingLinkage WeakLinkageLinkOnceLinkageExternalLinkageTGlobal TFunctionGlobal FunctionArgsFunctionIsConst ConstValue newModulenewNamedModule defineModule createModulevalueOfvaluezeroallOnesundefnewNamedFunction newFunctiondefineFunctioncreateFunctioncreateBasicBlock newBasicBlocknewNamedBasicBlockdefineBasicBlockgetCurrentBasicBlocknewNamedGlobal newGlobal defineGlobal createGlobal createStringcreateStringNul IsIndexArg GetElementPtrAllocArgCallArgsCmpOp RealPredicateRealTRealUNERealULERealULTRealUGERealUGTRealUEQRealUNORealORDRealONERealOLERealOLTRealOGERealOGTRealOEQ RealFalse IntPredicateIntSLEIntSLTIntSGEIntSGTIntULEIntULTIntUGEIntUGTIntNEIntEQABinOpRet TerminateretcondBrbrswitchunwind unreachableaddsubmuludivsdivuremsremfdivfremshllshrashrandorxorextractelement insertelement shufflevectortrunczextsextfptruncfpextfptouifptosiuitofpsitofpptrtointinttoptrbitcasticmpfcmpselectcallinvokephi addPhiInputsmalloc arrayMallocalloca arrayAllocafreeloadstore getElementPtrGenericUnsafe unsafePurify TranslatablegenerateFunctionsimpleFunctionunsafeGenerateFunctionbaseForeign.C.StringCStringForeign.Marshal.Array withArrayLenfromPassManager fromBuilderfromModuleProvider fromModule withModulewithModuleProvider withBuilderconstStringNulmakeCall makeInvoke buildEmptyPhiwithEmptyCString addPhiInswithPassManager mtl-1.1.0.2Control.Monad.TransliftIOgenMSym getModulerunCodeGenModulegenFSym getFunction getBuilderrunCodeGenFunctionconstOfunValuewithCurrentBuilder toGeneric fromGeneric