~@eS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R   Safe-InferedSTU6VWX YZ[\]^_6VWSTU6VWX Safe-Infered789:`a789:789:789:`a Safe-Infered;<=;<=;<=;<=None >Manage compile passes. ?Type of top level modules. @YFree 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. AWrite a module to a file. BRead a module from a file. ICreate a pass manager. J$Create a pass manager for a module. b=Add a control flow graph simplification pass to the manager. c0Add a constant propagation pass to the manager. d2Add a global value numbering pass to the manager. Pe>fghijklm?nopqrst@ABuCDvwxyz{|}E~FGHIJbcdKLMNOPQJ>fgijklm?noqrst@ABuCDvwyz{|}E~FGHIJbcdKLMNOPQJe>fghijklm?nopqrst@ABuCDvwxyz{|}E~FGHIJbcdKLMNOPQNoneUGet a list created by calls to staticFunction ,that must be passed to the execution engine via . VRAllows you to define part of a module while in the middle of defining a function. %RSTUVRSTUVRSTUVNoneWCResult tells whether the module was modified by any of the passes. WWWW Safe-InferedZ8Struct types; a list (nested tuple) of component types. \'Label type, produced by a basic block. ]5Fixed sized vector, the array size is encoded in the n parameter. _5Fixed sized arrays, the array size is encoded in the n parameter. a128 bit floating point. c!Variable sized unsigned integer.  The n parameter should belong to PosI. eVariable sized signed integer.  The n parameter should belong to PosI. XYZ[\]^_`abcdef6XYZ[\]^_`abcdef XYZ[\]^_`abcdefNone g*Define what vararg types are permissible. hThe h$ type is a placeholder for the real  type that  can be obtained with  castVarArgs. sFunction type. tTypes with a fixed size. vIFirst class types, i.e., the types that can be passed as arguments, etc. wPNumber of elements for instructions that handle both primitive and vector types }Primitive types. # class (IsType a) => IsPrimitive a ~Floating types. Integral or pointer type. Integral types. 5Arithmetic types, i.e., integral and floating types. GType descriptor, used to convey type information through the LLVM API. The > class classifies all types that have an LLVM representation. ghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn;45ghijklmnopqrstuvwxyz{|}~ghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnNoneeA 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 function with the given body. ?Set the calling convention of a function. By default it is the  C calling convention. KAdd attributes to a value. Beware, what attributes are allowed depends on  what kind of value it is. QCreate a reference to an external function while code generating for a function. 3 If LLVM cannot resolve its name, then you may try . As  , but for s rather than s JMake an external C function with a fixed address callable from LLVM code. 7This callback function can also be a Haskell function, that was imported like  % foreign import ccall "&nextElement" J nextElementFunPtr :: FunPtr (StablePtr (IORef [Word32]) -> IO Word32) See examples/List.hs. When you only use %, then LLVM cannot resolve the name. (However, I do not know why.) Thus % manages a list of static functions. (This list is automatically installed by   and can be manually obtained by U and installed by . " Installing" means calling LLVM's addGlobalMapping according to  @http://old.nabble.com/jit-with-external-functions-td7769793.html. Due to  +https://llvm.org/bugs/show_bug.cgi?id=20656 'this will fail with MCJIT of LLVM-3.6. As  , but for s rather than s $Create a new named global variable. Create a new global variable. +Give a global variable a (constant) value. %Create and define a global variable. +Create and define a named global variable. Make a constant vector. Make a constant vector. /Replicates or truncates the list to get length n. Make a constant array. /Replicates or truncates the list to get length n. Make a constant struct. Make a constant packed struct. uopqrstuvwxyz{|}~ module name module that is defined  module body  module body Function name Function to define (created by ). Function body. Function to define (created by ). Function body. Function body. Function body.  Constant?  Visibility Name [ 23rvyz{|}fopqrstuvwxyz{|}~NoneH      F      F      H      None%MThe LLVM execution engine is encapsulated so it cannot be accessed directly. D The reason is that (currently) there must only ever be one engine, ( so access to it is wrapped in a monad. (In contrast to generateFunction this compiles a function once. 7Thus it is faster for many calls to the same function. See examples/ Vector.hs. .If the function calls back into Haskell code, ,you also have to set the function addresses using * or +. )You must keep the execution engine alive *as long as you want to call the function.  Better use ) which handles this for you. *.Tell LLVM the address of an external function +if it cannot resolve a name automatically. +Alternatively you may declare the function with staticFunction instead of externFunction. +'Pass a list of global mappings to LLVM that can be obtained from . 3!"#$%&'()*+,!"#$%&'()*+,+!"#$%&'()*+,None-./0123456789:;-./0123456789:; - ./0123456789:;None?HMake a constant vector. Replicates or truncates the list to get length n. -This behaviour is consistent uncurry that of . SMay be abused for constructing vectors from lists uncurry statically unknown size. %<=>?<=>?"<=>?None'@ABCDEFG     @ABCDEFG#@ABCDEFG     None Iless or equal J less than Kgreater or equal L greater than M not equal Nequal Q4In principle we do not need the getValueArg method, because we could just use . "However, we want to prevent users ?from defining their own (disfunctional) IsIndexType instances. RAcceptable single index to getElementPointer. SAcceptable arguments to getElementPointer. EHIJKLMNOPQRST !"#$%&'()*U+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ2HIJKLMNOPQRST !"#$%&'()*U+,-./0123456789:;<=>1HNMLKJIOPQRST !"#$%&'()*U+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQNone[)Truncate a value to a shorter bit width. \Extend a value to wider width. 7 If the target type is signed, then preserve the sign, 9 If the target type is unsigned, then extended by zeros. ^It is zext, [0 or nop depending on the relation of the sizes. _It is sext, [0 or nop depending on the relation of the sizes. `It is _ or ^ depending on the sign mode. a!Truncate a floating point value. bExtend a floating point value. c.Convert a floating point value to an integer.  It is mapped to fptosi or fptoui depending on the type a. d.Convert an integer to a floating point value.  It is mapped to sitofp or uitofp depending on the type a. e!Convert a pointer to an integer. f!Convert an integer to a pointer. gLConvert between to values of the same size by just copying the bit pattern. jCompare integers. kCompare pointers. lCompare floating point values. !RSVTWXUYZV[W\]X^_`abcdefgYhiZjkl[VWXYZ[\]^_`abcdefghijkl RSVTWXUYZV[W\]X^_`abcdefgYhiZjkl[NoneVWXYZ[\]^_`abcdefghijklVWXYZ[\]^_`abcdefghijklNone9m0Acceptable argument to array memory allocation. oAcceptable arguments to  . sAcceptable arguments to  and . wAcceptable 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 in 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. ?Inform the code generator that this code can never be reached. :signed or unsigned integer division depending on the type 3signed or unsigned remainder depending on the type Floating point division. Floating point remainder. Get a value from a vector. .Insert a value into a vector, nondestructive. Permute vector. Get a value from an aggregate. 2Insert a value into an aggregate, nondestructive. )Truncate a value to a shorter bit width. &Zero extend a value to a wider width.  If possible, use 7 that chooses the right padding according to the types $Sign extend a value to wider width.  If possible, use 7 that chooses the right padding according to the types Extend a value to wider width. 7 If the target type is signed, then preserve the sign, 9 If the target type is unsigned, then extended by zeros. It is , 0 or nop depending on the relation of the sizes. It is , 0 or nop depending on the relation of the sizes. It is  or  depending on the sign mode. !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. .Convert a floating point value to an integer.  It is mapped to fptosi or fptoui depending on the type a. 7Convert an unsigned integer to a floating point value.  Although K should be prefered, this function may be useful for conversion from Bool. 4Convert a signed integer to a floating point value.  Although K should be prefered, this function may be useful for conversion from Bool. .Convert an integer to a floating point value.  It is mapped to sitofp or uitofp depending on the type a. !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 values of ordered types 7and choose predicates according to the compared types. 'Floating point numbers are compared in "ordered" mode, that is NaN operands yields \ as result.  Pointers are compared unsigned. ?These choices are consistent with comparison in plain Haskell. 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. /Call a function with the given arguments. The   instruction D is variadic, i.e., the number of arguments it takes depends on the  type of f. D This also sets the calling convention of the call to the function. C As LLVM itself defines, if the calling conventions of the calling   instruction and the function being called are different, undefined  behavior results. )Call a function with exception handling. D This also sets the calling convention of the call to the function. C As LLVM itself defines, if the calling conventions of the calling   instruction and the function being called are different, undefined  behavior results. 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. ];If we want to export that, then we should have a Size type & This is the official implementation, , but it suffers from the ptrtoint(gep) bug. Load a value from memory. Store a value in memory ^+Address arithmetic. See LLVM description.  (The type isn' t as accurate as it should be.) +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.) 9Like getElementPtr, but with an initial index that is 0. Z This is useful since any pointer first need to be indexed off the pointer, and then into 9 its actual value. This first indexing is often with 0. m_n`oabcdepfgqrsthuviwjxyz{|}~klmnopqBoolean to branch upon. Target for true. Target for false. Branch target. Value to branch upon. Default branch target. )Labels and corresponding branch targets. rstVector Index into the vector Vector Value to insert Index into the vector  Aggregate Index into the aggregate  Aggregate Value to insert Index into the aggregate uvwxyz{| } ~   Normal return point. Exception return point. Function to call. Normal return point. Exception return point. Function to call. Calling convention Normal return point. Exception return point. Function to call. Calling convention Normal return point. Exception return point. Function to call. "Must be a variable from a call to . Variables to add. ]Address to load from. Value to store. Address to store to. ^ !"#$%&'()*+,-./HIJKLMNOPQRSTUmnopqrstuvwxyz{|}~     m_n`oabcdepfgqrsthuviwjxy(~}|{zklmnopqrstuvwxyz{| } ~   ]^None Print a value. !Print a type. "Get the name of a . #2Convert a varargs function to a regular function.  !"#  !"#$%&'()*+,-./0123456>?@ABCDEFGHIJKLMNOPQRSTUVXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~y<=>?HIJKLMNOPQRSTUmnopqrstuvwxyz{|}~      !"#?@>IJABCDy~}|{zUHNMLKJI/ !"#$%&'()*+,-.pqr    n uvxwomSTRQstOP45~}vtuswx|{yzrinopqklmjhgefcdab_`]^\Z[XY6<=>?STVFRU EGHLNMOPQ3210# !"K !"#None&IClass of LLVM function types that can be translated to the corresponding  Haskell type. '3Generate a Haskell function from an LLVM function. NNote that the function is compiled for every call (Just-In-Time compilation). E If you want to compile the function once and call it a lot of times  then you should better use (. (ITranslate a function to Haskell code. This is a simplified interface to , the execution engine and module mechanism.  It is based on ' , so see there for limitations. )Combine ( and %. $%GRemove the IO from a function return type. This is unsafe in general. &'())!"#$%&'()*+,-./0123456789:;@ABCDEFG$%&'())#$'%&,")(*+&!'$%()-./012345678:;9ABCDE@FG $%&'()None1Available since LLVM-8. 2Available since LLVM-8. 3Available since LLVM-8. 4Available since LLVM-8. *+,-./01234 *+,-./01234 ,-./01234*+*+,-./01234 None 56789:56789:56789:56789: None> Synonym for CodeGenFunction r (Value a). ?Comparison functions. @Comparison functions. AComparison functions. BComparison functions. CComparison functions. DComparison functions. E Lazy and. F Lazy or. GYConditional, returns first element of the pair when condition is true, otherwise second. IReturn a value from an K. JUse x < - set $ ... to make a binding. KUnlift a function with TValue to have Value arguments. LLift a function from having Value arguments to having TValue arguments. MDefine a recursive K,, gets passed itself as the first argument. -;<=>?@ABCDEFGHIJKLM;<=>?@ABCDEFGHIJKLM>?@CDABEFGHIJ=K<LM;);<=>?@ABCDEFGHIJKLM NoneNNNN None OPQROPQRPQRO OPQR !"#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"QRSRTRURUVWXVWY Z[[\]^_`abcdefghijklmnopqrstuvwxyzz{{|}}~~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklUmnopqrstuvwxyz{|}~oprstuvwxyz{}~     |_mn !"#$%&'()*+,-./0123 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R R S U V TUVWUVXUVYUVZUV[UV\UV]^_`abacddebfghijklmnopqrstuvwxyz{|}~`u      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrstuvwxyz{|}~""""gXWCDj      !"#$%&'()*+,-./01gk23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX[YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                    llvm-tf-9.1 LLVM.CoreLLVM.Util.ProxyLLVM.Util.ForeignLLVM.Util.OptimizeLLVM.Core.AttributeLLVM.ExecutionEngineLLVM.Core.GuidedLLVM.Util.IntrinsicLLVM.Util.LoopLLVM.Util.ArithmeticLLVM.Util.FileLLVM.Util.MemoryLLVM.Core.UnaryVectorLLVM.Core.UtilLLVM.Core.CodeGenMonadaddGlobalMappingsLLVM.Core.DataLLVM.Core.TypeLLVM.Core.CodeGenExecutionEnginesimpleFunctionLLVM.ExecutionEngine.EnginegetGlobalMappingsLLVM.ExecutionEngine.TargetLLVM.Core.VectorconstCyclicVectorLLVM.ExecutionEngine.MarshalLLVM.Core.Instructions.PrivateLLVM.Core.Instructions.GuidedLLVM.Core.Instructionsllvm-ffi-9.1.0LLVM.Target.NativeinitializeNativeTarget LLVM.FFI.Core hostTripleExternalLinkageAvailableExternallyLinkageLinkOnceAnyLinkageLinkOnceODRLinkageLinkOnceODRAutoHideLinkageWeakAnyLinkageWeakODRLinkageAppendingLinkageInternalLinkagePrivateLinkageDLLImportLinkageDLLExportLinkageExternalWeakLinkage GhostLinkage CommonLinkageLinkerPrivateLinkageLinkerPrivateWeakLinkageLinkageIntEQIntNEIntUGTIntUGEIntULTIntULEIntSGTIntSGEIntSLTIntSLE IntPredicateFPFalseFPOEQFPOGTFPOGEFPOLTFPOLEFPONEFPORDFPUNOFPUEQFPUGTFPUGEFPULTFPULEFPUNEFPTrue FPPredicate LLVM.Raw.CoreattributeFunctionIndexattributeReturnIndexAttributeIndex tfp-1.0.1Type.Data.Num.Decimal.NumberNaturalPositive FixedListProxy fromValueelementwithalloca withArrayLen PassManagerModule destroyModulewriteBitcodeToFilereadBitcodeFromFile getFunctionsgetGlobalVariablesgetBasicBlocks getParamsgetInstructions getOperandscreatePassManagercreateFunctionPassManagerannotateValueListhasUsersgetUsesgetUsersgetUser isChildOfgetDepGlobalMappingsCodeGenFunction CodeGenModuleliftCodeGenModuleoptimizeModule PackedStructStructLabelVectorArrayFP128WordNIntN CastVarArgsVarArgs UnknownSize:& UncurryStructCurried uncurryStruct CurryStructUncurriedArgumentUncurriedResult curryStruct StructFields IsFunctionIsSizedSizeOf IsFirstClassIsScalarOrVectorShapeOfShape ShapedType VectorShape ScalarShape IsPrimitive IsFloatingIsIntegerOrPointer IsIntegerSignedArithmeticType FloatingType IntegerType IsArithmeticarithmeticTypeTypeDesc TDInvalidTypeTDStructTDLabel TDFunctionTDPtrTDVectorTDArrayTDIntTDVoidTDFP128TDDoubleTDFloatIsTypetypeDesctypeRef unsafeTypeReftypeNameintrinsicTypeName typeDesc2isSigned isFloatingsizeOf consStruct&TGlobal TFunctionGlobal BasicBlock FunctionArgsFunctionCodeGenFunctionResult AttributeFunctionIsConst ConstValueValue ModuleValue newModulenewNamedModule defineModule createModule setTargetgetModuleValuescastModuleValuevalueOfvaluezeroallOnesundefnewNamedFunction newFunctiondefineFunctioncreateFunctioncreateNamedFunctionsetFuncCallConv addAttributescreateBasicBlock newBasicBlocknewNamedBasicBlockdefineBasicBlockgetCurrentBasicBlocktoLabel fromLabelexternFunction externGlobalstaticFunctionstaticNamedFunction staticGlobalnewNamedGlobal newGlobal defineGlobal createGlobalcreateNamedGlobal createStringcreateStringNul withString withStringNul constVector constArrayconstCyclicArray constStructconstPackedStructzeroextsignextinregbyvalsretalignnoalias nocapturenestreturnednonnulldereferenceabledereferenceableOrNull swiftself swifterrorimmarg alignstack allocsize alwaysinlinebuiltincold convergentinaccessiblememonlyinaccessiblememOrArgmemonly inlinehint jumptableminsizenaked noJumpTables nobuiltin noduplicatenofreenoimplicitfloatnoinline nonlazybind noredzoneindirectTlsSegRefsnoreturn norecurse willreturnnosyncnounwindnullPointerIsValid optforfuzzingoptnoneoptsizepatchableFunction probeStackreadnonereadonlystackProbeSizenoStackArgProbe writeonly argmemonly returnsTwice safestacksanitizeAddresssanitizeMemorysanitizeThreadsanitizeHwaddresssanitizeMemtagspeculativeLoadHardening speculatablesspsspreq sspstrongstrictfpuwtable nocfCheckshadowcallstackGenericExecutionFunction EngineAccessrunEngineAccessrunEngineAccessWithModule getEnginegetPointerToFunctiongetExecutionFunctionaddFunctionValue addModule TargetDataabiAlignmentOfType abiSizeOfType littleEndiancallFrameAlignmentOfType intPtrTypeoffsetOfElement pointerSizepreferredAlignmentOfTypesizeOfTypeInBitsstoreSizeOfTypewithIntPtrType getTargetDatatargetDataFromStringtoVector fromVectorvector cyclicVectorMarshalpeekpoke alignment sizeOfArraypokeList CmpPredicateCmpLECmpLTCmpGECmpGTCmpNECmpEQGetField FieldType IsIndexType IsIndexArg GetElementPtrElementPtrType ValueConsGuidescalar getElementPtrgetElementPtr0truncextextBoolzadaptsadaptadaptfptruncfpextfptointinttofpptrtointinttoptrbitcastselectcmpicmppcmpfcmpAllocArgCallCallArgsCmpRet CmpResultCmpValueResultGetValue ValueType ValueCons2 BinOpValueRet Terminate InstrDesc IDInvalidOp IDInsertValueIDExtractValueIDShuffleVectorIDInsertElementIDExtractElementIDVAArg IDUserOp2 IDUserOp1IDSelectIDCallIDPhiIDFCmpIDICmp IDBitcast IDIntToPtr IDPtrToIntIDFPExt IDFPTruncIDSItoFPIDUItoFPIDFPtoSIIDFPtoUIIDSExtIDZExtIDTruncIDGetElementPtrIDStoreIDLoadIDAllocaIDBinOp IDUnreachableIDUnwindIDInvoke IDIndirectBrIDSwitch IDBrUncondIDBrCond IDRetVoidIDRet BinOpDescBOXorBOOrBOAndBOAShRBOLShRBOShLBOFRemBOSRemBOURemBOFDiv BOSDivExactBOSDivBOUDivBOFMul BOMulNuwNswBOMulNswBOMulNuwBOMulBOFSub BOSubNuwNswBOSubNswBOSubNuwBOSubBOFAdd BOAddNuwNswBOAddNswBOAddNuwBOAddArgDescAEALAIAV getInstrDescretcondBrbrswitch unreachableaddsubmuliaddisubimul iaddNoWrap isubNoWrap imulNoWrapidiviremudivsdivuremsremfaddfsubfmulfdivfremshllshrashrandorxorshrnegineg inegNoWrapfneginvextractelement insertelement shufflevector extractvalue insertvaluezextsextfptouifptosiuitofpsitofp setHasNoNaNs setHasNoInfssetHasNoSignedZerossetHasAllowReciprocal setFastMathcallcallFromFunction applyCallrunCallinvokeFromFunctioninvokecallWithConvFromFunction callWithConvinvokeWithConvFromFunctioninvokeWithConvphi addPhiInputsmalloc arrayMalloc arrayAllocafreeloadstore dumpValuedumpType getValueName castVarArgsUnsafeunsafeRemoveIO TranslatablegenerateFunctionunsafeGenerateFunctioncall1call2minmaxabstruncatefloor maybeUAddSat maybeSAddSat maybeUSubSat maybeSSubSatPhiphisaddPhisforLoop mapVector mapVector2 CallIntrinsicToArithFunction ArithFunctionTValue%==%/=%>%>=%<%<=%&&%||???retrnset arithFunctiontoArithFunctionrecursiveFunctionwriteCodeGenModule IsLengthTypememcpymemmovememsetOp0runOp0cyclicVectorAppendfixed-length-0.2.1Data.FixedLengthuncurryhead toFixedList fromFixedListLengthT$fApplicativeProxy$fFunctorProxyaddCFGSimplificationPassaddConstantPropagationPass addGVNPassUsefromPassManagerBuilder fromBuilder fromModuleType functionType structType withModule valueHasType showTypeOf showType' withBuilder createBuilder positionAtEndgetInsertBlockappendBasicBlock addFunctiongetParam addGlobalconstStringInternal constStringconstStringNul withValuewithBasicBlockmakeCallmakeCallWithCc makeInvokemakeInvokeWithCc buildEmptyPhiwithEmptyCString addPhiInswithPassManageraddDemoteMemoryToRegisterPassaddInstructionCombiningPassaddPromoteMemoryToRegisterPassaddReassociatePassrunFunctionPassManagerinitializeFunctionPassManagerfinalizeFunctionPassManager getValueNameUgetBasicBlockNameU getObjListannotateBasicBlockList isConstant isIntrinsicbaseForeign.C.StringCStringForeign.Marshal.ArrayCGFCGFState cgf_module cgf_builder cgf_functioncgf_nextCGMCGMState cgm_module cgm_externscgm_global_mappingscgm_nextgenMSym getModulerunCodeGenModulegenFSym getFunction getBuildergetFunctionModule getExterns putExternsaddGlobalMappingaddFunctionMappingaddMappingToStaterunCodeGenFunction$fMonoidGlobalMappings$fSemigroupGlobalMappings$fShowGlobalMappings withBitSize $fShowVector$fBoundedWordN $fBoundedIntNghc-prim GHC.TypesIOPtrSize NotANumber curryStruct' fieldTypesfuncTypewithCodevectorArithmeticType$fCastVarArgsVarArgs(->)$fCastVarArgsVarArgsIO$fCastVarArgs(->)(->)$fIsTypeVarArgs$fIsFunctionVarArgs$fIsFunctionIO$fIsFunction(->)$fIsScalarOrVectorVector$fIsScalarOrVectorPtr$fIsScalarOrVector()$fIsScalarOrVectorLabel$fIsScalarOrVectorWord64$fIsScalarOrVectorWord32$fIsScalarOrVectorWord16$fIsScalarOrVectorWord8$fIsScalarOrVectorInt64$fIsScalarOrVectorInt32$fIsScalarOrVectorInt16$fIsScalarOrVectorInt8$fIsScalarOrVectorBool$fIsScalarOrVectorFP128$fIsScalarOrVectorDouble$fIsScalarOrVectorFloat$fIsScalarOrVectorWordN$fIsScalarOrVectorIntN$fIsPrimitivePtr$fIsPrimitive()$fIsPrimitiveLabel$fIsPrimitiveWord64$fIsPrimitiveWord32$fIsPrimitiveWord16$fIsPrimitiveWord8$fIsPrimitiveInt64$fIsPrimitiveInt32$fIsPrimitiveInt16$fIsPrimitiveInt8$fIsPrimitiveBool$fIsPrimitiveWordN$fIsPrimitiveIntN$fIsPrimitiveFP128$fIsPrimitiveDouble$fIsPrimitiveFloat$fIsSizedPackedStruct$fIsSizedStruct$fIsSizedStablePtr$fIsSizedFunPtr $fIsSizedPtr$fIsSizedVector$fIsSizedArray$fIsSizedWord64$fIsSizedWord32$fIsSizedWord16$fIsSizedWord8$fIsSizedInt64$fIsSizedInt32$fIsSizedInt16 $fIsSizedInt8 $fIsSizedBool$fIsSizedFP128$fIsSizedDouble$fIsSizedFloat$fIsSizedWordN $fIsSizedIntN$fIsFirstClassStruct$fIsFirstClass()$fIsFirstClassLabel$fIsFirstClassStablePtr$fIsFirstClassFunPtr$fIsFirstClassPtr$fIsFirstClassArray$fIsFirstClassVector$fIsFirstClassWord64$fIsFirstClassWord32$fIsFirstClassWord16$fIsFirstClassWord8$fIsFirstClassInt64$fIsFirstClassInt32$fIsFirstClassInt16$fIsFirstClassInt8$fIsFirstClassBool$fIsFirstClassWordN$fIsFirstClassIntN$fIsFirstClassFP128$fIsFirstClassDouble$fIsFirstClassFloat$fIsIntegerOrPointerPtr$fIsIntegerOrPointerVector$fIsIntegerOrPointerWord64$fIsIntegerOrPointerWord32$fIsIntegerOrPointerWord16$fIsIntegerOrPointerWord8$fIsIntegerOrPointerInt64$fIsIntegerOrPointerInt32$fIsIntegerOrPointerInt16$fIsIntegerOrPointerInt8$fIsIntegerOrPointerBool$fIsIntegerOrPointerWordN$fIsIntegerOrPointerIntN$fIsIntegerVector$fIsIntegerWord64$fIsIntegerWord32$fIsIntegerWord16$fIsIntegerWord8$fIsIntegerInt64$fIsIntegerInt32$fIsIntegerInt16$fIsIntegerInt8$fIsIntegerBool$fIsIntegerWordN$fIsIntegerIntN$fIsFloatingVector$fIsFloatingFP128$fIsFloatingDouble$fIsFloatingFloat$fIsArithmeticVector$fIsArithmeticWord64$fIsArithmeticWord32$fIsArithmeticWord16$fIsArithmeticWord8$fIsArithmeticInt64$fIsArithmeticInt32$fIsArithmeticInt16$fIsArithmeticInt8$fIsArithmeticBool$fIsArithmeticWordN$fIsArithmeticIntN$fIsArithmeticFP128$fIsArithmeticDouble$fIsArithmeticFloat$fUncurryStruct(,)$fUncurryStruct()$fCurryStruct(->)$fCurryStructStruct$fStructFields()$fStructFields(,)$fIsTypePackedStruct$fIsTypeStruct $fIsTypeIO $fIsType(->)$fIsTypeStablePtr$fIsTypeFunPtr $fIsTypePtr$fIsTypeVector $fIsTypeArray $fIsTypeInt64 $fIsTypeInt32 $fIsTypeInt16 $fIsTypeInt8$fIsTypeWord64$fIsTypeWord32$fIsTypeWord16 $fIsTypeWord8 $fIsTypeBool $fIsTypeWordN $fIsTypeIntN $fIsTypeLabel $fIsType() $fIsTypeFP128$fIsTypeDouble $fIsTypeFloat$fShapeVectorShape$fShapeScalarShape$fFunctorArithmeticType IsConstStruct ConstStructOfconstValueFieldsOf Parameterized paramFunc IsConstFields constFieldsOfconstOf unConstValueunValue constOfPtrunsafeConstValueunsafeWithConstValue constEnum constIntegerconstIconstFdefineFunctionParam parameterizedparamdefineParameterized externCorewithCurrentBuilder fixArraySizestringconstVectorGen$fIsConstStruct()$fIsConstStruct(,)$fFunctionArgsIO$fFunctionArgs(->)$fIsConstFields()$fIsConstFields(,)$fIsConstPackedStruct$fIsConstStruct$fIsConstArray$fIsConstVector$fIsConstStablePtr$fIsConstFunPtr $fIsConstPtr $fIsConstIntN$fIsConstWordN$fIsConstDouble$fIsConstFloat$fIsConstInt64$fIsConstInt32$fIsConstInt16 $fIsConstInt8$fIsConstWord64$fIsConstWord32$fIsConstWord16$fIsConstWord8 $fIsConstBoolDefaultVisibilityHiddenVisibilityProtectedVisibility Visibilitysimple withParam toGeneric fromGeneric GenericValuefromGenericValue keepAliveEA fromEngine withEnginecreateExecutionEngineForModule getTheEngine$runEngineAccessInterpreterWithModule accessEnginegetExecutionEngineTargetDatawithGenericValuecreateGenericValueWithwithAll runFunctiongetRunFunction toGenericIntfromGenericInt toGenericRealfromGenericReal$fGenericStablePtr $fGenericPtr$fGenericDouble$fGenericFloat$fGenericWord64$fGenericWord32$fGenericWord16$fGenericWord8$fGenericInt64$fGenericInt32$fGenericInt16 $fGenericInt8 $fGeneric()$fExecutionFunction(->)$fExecutionFunctionIOunsafeIO unsafeIntIOmakeTargetDatacreateTargetDataMkVectorTupleunaryFromDecimalVectordecimalFromUnaryVector withNatDict withNatDict1 withPosDict1withUnaryDecVector ourTargetData replicateindices$fArbitraryVector$fRealFloatVector$fFloatingVector$fRealFracVector$fFractionalVector$fIntegralVector $fRealVector $fEnumVector $fNumVector $fOrdVector $fEqVector$fTraversableVector$fFoldableVector$fApplicativeVector$fFunctorVector$fStorableVector$fMkVectorPosa$fMkVectorPosa0$fMkVectorPosa1 peekStruct pokeStruct targetData peekPrimitive pokePrimitive castBoolPtr peekArray peekVector pokeArray pokeListAux castElemPtr withPtrProxy$fMarshalStruct$fMarshalVector$fMarshalArray $fMarshalBool$fMarshalStablePtr$fMarshalFunPtr $fMarshalPtr$fMarshalWord64$fMarshalWord32$fMarshalWord16$fMarshalWord8$fMarshalInt64$fMarshalInt32$fMarshalInt16 $fMarshalInt8$fMarshalDouble$fMarshalFloat getValueArggetArg getIxListTrinOp getTrinOpBinOpgetBinOpUnOpgetUnOpUnValue getUnValueswitchValueCons FFITrinOpFFIConstTrinOpFFIBinOp FFIConstBinOpFFIUnOp FFIConstUnOp FFIConvertFFIConstConvertconvertconvertConstValue convertValueunopbinoptrinopunConst fieldProxyuintFromCmpPredicatesintFromCmpPredicatefpFromCmpPredicate$fGetField(,)Pos$fGetField(,)Zero$fGetElementPtrPackedStruct(,)$fGetElementPtrStruct(,)$fGetElementPtrVector(,)$fGetElementPtrArray(,)$fGetElementPtra()$fIsIndexArgInt64$fIsIndexArgInt32$fIsIndexArgWord64$fIsIndexArgWord32$fIsIndexArgValue$fIsIndexArgConstValue$fIsIndexTypeInt64$fIsIndexTypeInt32$fIsIndexTypeWord64$fIsIndexTypeWord32$fValueConsValue$fValueConsConstValueVTproxyFromGuidegetElementPtrGencompareGuideSizes_cmp$fFunctorGuideFalse_sizeOf_getElementPtrDynamic getAllocArgCalledFunction CallerResultCallerFunctiondoCallCallercmpBldcmpCnstgetIxret' alignedFree alignedMallocbinOpMap convOpMap getArgDesc terminatewithCurrentBuilder_withArithmeticTypesbinop buildBinOpucmpBldscmpBldfcmpBlducmpCnstscmpCnstfcmpCnst_ucmp_scmpfastMath doCallDef_alignOfalignOf_getElementPtr$fAllocArgWord32$fAllocArgConstValue$fAllocArgValue$fCallArgsIOCodeGenFunctionr$fCallArgs(->)(->)r$fCmpRetVector $fCmpRetIntN $fCmpRetWordN $fCmpRetPtr $fCmpRetInt64 $fCmpRetInt32 $fCmpRetInt16 $fCmpRetInt8$fCmpRetWord64$fCmpRetWord32$fCmpRetWord16 $fCmpRetWord8 $fCmpRetBool $fCmpRetFP128$fCmpRetDouble $fCmpRetFloat$fGetValueArrayProxy$fGetValueArrayWord64$fGetValueArrayWord32$fGetValueStructProxy $fValueCons2ConstValueConstValue$fValueCons2ConstValueValue$fValueCons2ValueConstValue$fValueCons2ValueValue $fRet()() $fRetValuea $fShowArgDescRemoveIO translate $fUnsafeIO $fUnsafe(->)$fTranslatableIO$fTranslatable(->) valueTypeName functionNameopsat $fPhi(,,)$fPhi(,) $fPhiValue$fPhi()callIntrinsic1'callIntrinsic2'toArithFunction'arithFunction'_toArithFunction2macOScallIntrinsic1callIntrinsic2$fCallIntrinsicVector$fCallIntrinsicDouble$fCallIntrinsicFloat$fToArithFunctionr(->)(->)#$fToArithFunctionrIOCodeGenFunction$fArithFunctionrz(->)(->)/$fArithFunctionraCodeGenFunctionCodeGenFunction$fRealFloatCodeGenFunction$fFloatingCodeGenFunction$fRealFracCodeGenFunction$fFractionalCodeGenFunction$fIntegralCodeGenFunction$fRealCodeGenFunction$fEnumCodeGenFunction$fNumCodeGenFunction$fOrdCodeGenFunction$fEqCodeGenFunction memcpyFunc memmoveFunc memsetFunc$fIsLengthTypeWord64$fIsLengthTypeWord32