packages feed

llvm-ffi 9.0.0 → 9.1.0

raw patch · 10 files changed

+14345/−1828 lines, 10 files

Files

example/JIT.hs view
@@ -142,7 +142,7 @@             EE.createExecutionEngineForModuleCPU execEngineRef modul errorMsgRef          when (err/=Core.false) $ do             noResult $-               printf "Core.createExecutionEngine: %s\n"+               printf "createExecutionEngine: %s\n"                   =<< CStr.peekCString =<< peek errorMsgRef             Exit.exitFailure 
llvm-ffi.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name:          llvm-ffi-Version:       9.0.0+Version:       9.1.0 License:       BSD-3-Clause License-File:  LICENSE Synopsis:      FFI bindings to the LLVM compiler toolkit.@@ -102,7 +102,7 @@   Location: http://hub.darcs.net/thielema/llvm-ffi/  Source-Repository this-  Tag:      9.0.0+  Tag:      9.1.0   Type:     darcs   Location: http://hub.darcs.net/thielema/llvm-ffi/ @@ -146,6 +146,7 @@       LLVM.Target.Sparc       LLVM.Target.X86       LLVM.Target.XCore+      LLVM.Raw.Core    If flag(llvm309)     If flag(pkgConfig)@@ -155,6 +156,7 @@         PkgConfig-Depends: llvm == 3.9.*     Else       Extra-Libraries: LLVM-3.9+    Hs-Source-Dirs: src/3.9     CC-Options: -DHS_LLVM_VERSION=309     Cxx-Options: -DHS_LLVM_VERSION=309     CPP-Options: -DHS_LLVM_VERSION=309@@ -167,6 +169,7 @@           PkgConfig-Depends: llvm == 4.0.*       Else         Extra-Libraries: LLVM-4.0+      Hs-Source-Dirs: src/4.0       CC-Options: -DHS_LLVM_VERSION=400       Cxx-Options: -DHS_LLVM_VERSION=400       CPP-Options: -DHS_LLVM_VERSION=400@@ -179,6 +182,7 @@             PkgConfig-Depends: llvm == 5.0.*         Else           Extra-Libraries: LLVM-5.0+        Hs-Source-Dirs: src/5.0         CC-Options: -DHS_LLVM_VERSION=500         Cxx-Options: -DHS_LLVM_VERSION=500         CPP-Options: -DHS_LLVM_VERSION=500@@ -191,6 +195,7 @@               PkgConfig-Depends: llvm == 6.0.*           Else             Extra-Libraries: LLVM-6.0+          Hs-Source-Dirs: src/6.0           CC-Options: -DHS_LLVM_VERSION=600           Cxx-Options: -DHS_LLVM_VERSION=600           CPP-Options: -DHS_LLVM_VERSION=600@@ -203,6 +208,7 @@                 PkgConfig-Depends: llvm == 7.*             Else               Extra-Libraries: LLVM-7+            Hs-Source-Dirs: src/7             CC-Options: -DHS_LLVM_VERSION=700             Cxx-Options: -DHS_LLVM_VERSION=700             CPP-Options: -DHS_LLVM_VERSION=700@@ -215,6 +221,7 @@                   PkgConfig-Depends: llvm == 8.*               Else                 Extra-Libraries: LLVM-8+              Hs-Source-Dirs: src/8               CC-Options: -DHS_LLVM_VERSION=800               Cxx-Options: -DHS_LLVM_VERSION=800               CPP-Options: -DHS_LLVM_VERSION=800@@ -226,13 +233,13 @@                   PkgConfig-Depends: llvm == 9.*               Else                 Extra-Libraries: LLVM-9+              Hs-Source-Dirs: src/9               CC-Options: -DHS_LLVM_VERSION=900               Cxx-Options: -DHS_LLVM_VERSION=900               CPP-Options: -DHS_LLVM_VERSION=900    CC-Options: -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1   CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS-  CPP-Options: -D__STDC_LIMIT_MACROS   Include-Dirs: include   Extra-Libraries: stdc++   Cxx-Options: -std=c++0x -std=c++11
+ src/3.9/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1636 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddFunctionAttr" addFunctionAttr+    :: ValueRef -> Attribute -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMGetFunctionAttr" getFunctionAttr+    :: ValueRef -> IO Attribute++foreign import ccall unsafe "LLVMRemoveFunctionAttr" removeFunctionAttr+    :: ValueRef -> Attribute -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAddAttribute" addAttribute+    :: ValueRef -> Attribute -> IO ()++foreign import ccall unsafe "LLVMRemoveAttribute" removeAttribute+    :: ValueRef -> Attribute -> IO ()++foreign import ccall unsafe "LLVMGetAttribute" getAttribute+    :: ValueRef -> IO Attribute++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMAddInstrAttribute" addInstrAttribute+    :: ValueRef -> CUInt -> Attribute -> IO ()++foreign import ccall unsafe "LLVMRemoveInstrAttribute" removeInstrAttribute+    :: ValueRef -> CUInt -> Attribute -> IO ()++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/4.0/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1618 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/5.0/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1630 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetSubtypes" getSubtypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMGetNumContainedTypes" getNumContainedTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMetadataAsValue" metadataAsValue+    :: ContextRef -> MetadataRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueAsMetadata" valueAsMetadata+    :: ValueRef -> IO MetadataRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/6.0/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1636 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetSubtypes" getSubtypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMGetNumContainedTypes" getNumContainedTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMTokenTypeInContext" tokenTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMMetadataTypeInContext" metadataTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMetadataAsValue" metadataAsValue+    :: ContextRef -> MetadataRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueAsMetadata" valueAsMetadata+    :: ValueRef -> IO MetadataRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/7/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1744 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetSourceFileName" getSourceFileName+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetSourceFileName" setSourceFileName+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMCopyModuleFlagsMetadata" copyModuleFlagsMetadata+    :: ModuleRef -> (Ptr CSize) -> IO (Ptr ModuleFlagEntry)++foreign import ccall unsafe "LLVMDisposeModuleFlagsMetadata" disposeModuleFlagsMetadata+    :: (Ptr ModuleFlagEntry) -> IO ()++foreign import ccall unsafe "LLVMModuleFlagEntriesGetFlagBehavior" moduleFlagEntriesGetFlagBehavior+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO ModuleFlagBehavior++foreign import ccall unsafe "LLVMModuleFlagEntriesGetKey" moduleFlagEntriesGetKey+    :: (Ptr ModuleFlagEntry) -> CUInt -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMModuleFlagEntriesGetMetadata" moduleFlagEntriesGetMetadata+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO MetadataRef++foreign import ccall unsafe "LLVMGetModuleFlag" getModuleFlag+    :: ModuleRef -> CString -> CSize -> IO MetadataRef++foreign import ccall unsafe "LLVMAddModuleFlag" addModuleFlag+    :: ModuleRef -> ModuleFlagBehavior -> CString -> CSize -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetModuleInlineAsm" getModuleInlineAsm+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm2" setModuleInlineAsm2+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMAppendModuleInlineAsm" appendModuleInlineAsm+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetInlineAsm" getInlineAsm+    :: TypeRef -> CString -> CSize -> CString -> CSize -> LLVM.Bool -> LLVM.Bool -> InlineAsmDialect -> IO ValueRef++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetSubtypes" getSubtypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMGetNumContainedTypes" getNumContainedTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMTokenTypeInContext" tokenTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMMetadataTypeInContext" metadataTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName2" getValueName2+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetValueName2" setValueName2+    :: ValueRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMGetUnnamedAddress" getUnnamedAddress+    :: ValueRef -> IO UnnamedAddr++foreign import ccall unsafe "LLVMSetUnnamedAddress" setUnnamedAddress+    :: ValueRef -> UnnamedAddr -> IO ()++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobalAlias" getNamedGlobalAlias+    :: ModuleRef -> CString -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobalAlias" getFirstGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobalAlias" getLastGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobalAlias" getNextGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobalAlias" getPreviousGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasGetAliasee" aliasGetAliasee+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasSetAliasee" aliasSetAliasee+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMetadataAsValue" metadataAsValue+    :: ContextRef -> MetadataRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueAsMetadata" valueAsMetadata+    :: ValueRef -> IO MetadataRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupRet" buildCleanupRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchRet" buildCatchRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchPad" buildCatchPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupPad" buildCleanupPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchSwitch" buildCatchSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddHandler" addHandler+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumHandlers" getNumHandlers+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetHandlers" getHandlers+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetArgOperand" getArgOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetArgOperand" setArgOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetParentCatchSwitch" getParentCatchSwitch+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParentCatchSwitch" setParentCatchSwitch+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/8/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1867 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextShouldDiscardValueNames" contextShouldDiscardValueNames+    :: ContextRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMContextSetDiscardValueNames" contextSetDiscardValueNames+    :: ContextRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetSourceFileName" getSourceFileName+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetSourceFileName" setSourceFileName+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMCopyModuleFlagsMetadata" copyModuleFlagsMetadata+    :: ModuleRef -> (Ptr CSize) -> IO (Ptr ModuleFlagEntry)++foreign import ccall unsafe "LLVMDisposeModuleFlagsMetadata" disposeModuleFlagsMetadata+    :: (Ptr ModuleFlagEntry) -> IO ()++foreign import ccall unsafe "LLVMModuleFlagEntriesGetFlagBehavior" moduleFlagEntriesGetFlagBehavior+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO ModuleFlagBehavior++foreign import ccall unsafe "LLVMModuleFlagEntriesGetKey" moduleFlagEntriesGetKey+    :: (Ptr ModuleFlagEntry) -> CUInt -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMModuleFlagEntriesGetMetadata" moduleFlagEntriesGetMetadata+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO MetadataRef++foreign import ccall unsafe "LLVMGetModuleFlag" getModuleFlag+    :: ModuleRef -> CString -> CSize -> IO MetadataRef++foreign import ccall unsafe "LLVMAddModuleFlag" addModuleFlag+    :: ModuleRef -> ModuleFlagBehavior -> CString -> CSize -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetModuleInlineAsm" getModuleInlineAsm+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm2" setModuleInlineAsm2+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMAppendModuleInlineAsm" appendModuleInlineAsm+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetInlineAsm" getInlineAsm+    :: TypeRef -> CString -> CSize -> CString -> CSize -> LLVM.Bool -> LLVM.Bool -> InlineAsmDialect -> IO ValueRef++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetFirstNamedMetadata" getFirstNamedMetadata+    :: ModuleRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetLastNamedMetadata" getLastNamedMetadata+    :: ModuleRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNextNamedMetadata" getNextNamedMetadata+    :: NamedMDNodeRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetPreviousNamedMetadata" getPreviousNamedMetadata+    :: NamedMDNodeRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNamedMetadata" getNamedMetadata+    :: ModuleRef -> CString -> CSize -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetOrInsertNamedMetadata" getOrInsertNamedMetadata+    :: ModuleRef -> CString -> CSize -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNamedMetadataName" getNamedMetadataName+    :: NamedMDNodeRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetDebugLocDirectory" getDebugLocDirectory+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetDebugLocFilename" getDebugLocFilename+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetDebugLocLine" getDebugLocLine+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetDebugLocColumn" getDebugLocColumn+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsLiteralStruct" isLiteralStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetSubtypes" getSubtypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMGetNumContainedTypes" getNumContainedTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMTokenTypeInContext" tokenTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMMetadataTypeInContext" metadataTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName2" getValueName2+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetValueName2" setValueName2+    :: ValueRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMGetUnnamedAddress" getUnnamedAddress+    :: ValueRef -> IO UnnamedAddr++foreign import ccall unsafe "LLVMSetUnnamedAddress" setUnnamedAddress+    :: ValueRef -> UnnamedAddr -> IO ()++foreign import ccall unsafe "LLVMGlobalGetValueType" globalGetValueType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGlobalSetMetadata" globalSetMetadata+    :: ValueRef -> CUInt -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMGlobalEraseMetadata" globalEraseMetadata+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGlobalClearMetadata" globalClearMetadata+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGlobalCopyAllMetadata" globalCopyAllMetadata+    :: ValueRef -> (Ptr CSize) -> IO (Ptr ValueMetadataEntry)++foreign import ccall unsafe "LLVMDisposeValueMetadataEntries" disposeValueMetadataEntries+    :: (Ptr ValueMetadataEntry) -> IO ()++foreign import ccall unsafe "LLVMValueMetadataEntriesGetKind" valueMetadataEntriesGetKind+    :: (Ptr ValueMetadataEntry) -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMValueMetadataEntriesGetMetadata" valueMetadataEntriesGetMetadata+    :: (Ptr ValueMetadataEntry) -> CUInt -> IO MetadataRef++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobalAlias" getNamedGlobalAlias+    :: ModuleRef -> CString -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobalAlias" getFirstGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobalAlias" getLastGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobalAlias" getNextGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobalAlias" getPreviousGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasGetAliasee" aliasGetAliasee+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasSetAliasee" aliasSetAliasee+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIntrinsicDeclaration" getIntrinsicDeclaration+    :: ModuleRef -> CUInt -> (Ptr TypeRef) -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMIntrinsicGetType" intrinsicGetType+    :: ContextRef -> CUInt -> (Ptr TypeRef) -> CSize -> IO TypeRef++foreign import ccall unsafe "LLVMIntrinsicGetName" intrinsicGetName+    :: CUInt -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMIntrinsicCopyOverloadedName" intrinsicCopyOverloadedName+    :: CUInt -> (Ptr TypeRef) -> CSize -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMIntrinsicIsOverloaded" intrinsicIsOverloaded+    :: CUInt -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMetadataAsValue" metadataAsValue+    :: ContextRef -> MetadataRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueAsMetadata" valueAsMetadata+    :: ValueRef -> IO MetadataRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMCreateBasicBlockInContext" createBasicBlockInContext+    :: ContextRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionGetAllMetadataOtherThanDebugLoc" instructionGetAllMetadataOtherThanDebugLoc+    :: ValueRef -> (Ptr CSize) -> IO (Ptr ValueMetadataEntry)++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsATerminatorInst" isATerminatorInst+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledFunctionType" getCalledFunctionType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke2" buildInvoke2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupRet" buildCleanupRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchRet" buildCatchRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchPad" buildCatchPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupPad" buildCleanupPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchSwitch" buildCatchSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddHandler" addHandler+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumHandlers" getNumHandlers+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetHandlers" getHandlers+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetArgOperand" getArgOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetArgOperand" setArgOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetParentCatchSwitch" getParentCatchSwitch+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParentCatchSwitch" setParentCatchSwitch+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemSet" buildMemSet+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemCpy" buildMemCpy+    :: BuilderRef -> ValueRef -> CUInt -> ValueRef -> CUInt -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemMove" buildMemMove+    :: BuilderRef -> ValueRef -> CUInt -> ValueRef -> CUInt -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad2" buildLoad2+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP2" buildGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP2" buildInBoundsGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP2" buildStructGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntCast2" buildIntCast2+    :: BuilderRef -> ValueRef -> TypeRef -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall2" buildCall2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
+ src/9/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1924 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE EmptyDataDecls #-}+{-# LANGUAGE DeriveDataTypeable #-}+module LLVM.Raw.Core where++import qualified LLVM.FFI.Base as LLVM++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word32, Word64)+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong+type CSize    = C.CSize+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++data Module+    deriving (Typeable)+type ModuleRef = Ptr Module++data ModuleProvider+    deriving (Typeable)+type ModuleProviderRef = Ptr ModuleProvider++data Type+    deriving (Typeable)+type TypeRef = Ptr Type++data BasicBlock+    deriving (Typeable)+type BasicBlockRef = Ptr BasicBlock++data Value+    deriving (Typeable)+type ValueRef = Ptr Value++data OpaqueUse+    deriving (Typeable)+type UseRef = Ptr OpaqueUse++data Builder+    deriving (Typeable)+type BuilderRef = Ptr Builder++data MemoryBuffer+    deriving (Typeable)+type MemoryBufferRef = Ptr MemoryBuffer++data PassManager+    deriving (Typeable)+type PassManagerRef = Ptr PassManager++data PassRegistry+    deriving (Typeable)+type PassRegistryRef = Ptr PassRegistry++data Context+    deriving (Typeable)+type ContextRef = Ptr Context++{-+data Attribute+    deriving (Typeable)+-}+-- until 3.9+newtype Attribute = Attribute Word32+type AttributeRef = Ptr Attribute++newtype AttributeIndex = AttributeIndex #{type LLVMAttributeIndex}++attributeReturnIndex, attributeFunctionIndex :: AttributeIndex+attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)+attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)+++data Metadata+    deriving (Typeable)+type MetadataRef = Ptr Metadata++data DiagnosticInfo+    deriving (Typeable)+type DiagnosticInfoRef = Ptr DiagnosticInfo++data NamedMDNode+    deriving (Typeable)+type NamedMDNodeRef = Ptr NamedMDNode+++data ModuleFlagEntry+    deriving (Typeable)+data ValueMetadataEntry+    deriving (Typeable)++type DiagnosticHandler = FunPtr (DiagnosticInfoRef -> Ptr () -> IO ())+type YieldCallback = FunPtr (ContextRef -> Ptr () -> IO ())++newtype CallingConvention = CallingConvention {unCallingConvention :: CUInt}++newtype AtomicOrdering = AtomicOrdering #{type LLVMAtomicOrdering}+newtype AtomicRMWBinOp = AtomicRMWBinOp #{type LLVMAtomicRMWBinOp}+newtype DiagnosticSeverity = DiagnosticSeverity #{type LLVMDiagnosticSeverity}+newtype DLLStorageClass = DLLStorageClass #{type LLVMDLLStorageClass}+-- newtype InlineAsmDialect = InlineAsmDialect #{type LLVMInlineAsmDialect}+newtype InlineAsmDialect = InlineAsmDialect Word32+newtype IntPredicate = IntPredicate #{type LLVMIntPredicate}+newtype Linkage = Linkage #{type LLVMLinkage}+-- newtype ModuleFlagBehavior = ModuleFlagBehavior #{type LLVMModuleFlagBehavior}+newtype ModuleFlagBehavior = ModuleFlagBehavior Word32+newtype Opcode = Opcode #{type LLVMOpcode}+newtype RealPredicate = RealPredicate #{type LLVMRealPredicate}+newtype ThreadLocalMode = ThreadLocalMode #{type LLVMThreadLocalMode}+newtype TypeKind = TypeKind {unTypeKind :: #{type LLVMTypeKind}}+-- newtype UnnamedAddr = UnnamedAddr #{type LLVMUnnamedAddr}+newtype UnnamedAddr = UnnamedAddr Word32+newtype ValueKind = ValueKind #{type LLVMValueKind}+newtype Visibility = Visibility #{type LLVMVisibility}+++foreign import ccall unsafe "LLVMInitializeCore" initializeCore+    :: PassRegistryRef -> IO ()++foreign import ccall unsafe "LLVMShutdown" shutdown+    :: IO ()++foreign import ccall unsafe "LLVMCreateMessage" createMessage+    :: CString -> IO CString++foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage+    :: CString -> IO ()++foreign import ccall unsafe "LLVMContextCreate" contextCreate+    :: IO ContextRef++foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext+    :: IO ContextRef++foreign import ccall unsafe "LLVMContextSetDiagnosticHandler" contextSetDiagnosticHandler+    :: ContextRef -> DiagnosticHandler -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextGetDiagnosticHandler" contextGetDiagnosticHandler+    :: ContextRef -> IO DiagnosticHandler++foreign import ccall unsafe "LLVMContextGetDiagnosticContext" contextGetDiagnosticContext+    :: ContextRef -> IO (Ptr ())++foreign import ccall unsafe "LLVMContextSetYieldCallback" contextSetYieldCallback+    :: ContextRef -> YieldCallback -> (Ptr ()) -> IO ()++foreign import ccall unsafe "LLVMContextShouldDiscardValueNames" contextShouldDiscardValueNames+    :: ContextRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMContextSetDiscardValueNames" contextSetDiscardValueNames+    :: ContextRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMContextDispose" contextDispose+    :: ContextRef -> IO ()++foreign import ccall unsafe "LLVMGetDiagInfoDescription" getDiagInfoDescription+    :: DiagnosticInfoRef -> IO CString++foreign import ccall unsafe "LLVMGetDiagInfoSeverity" getDiagInfoSeverity+    :: DiagnosticInfoRef -> IO DiagnosticSeverity++foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext+    :: ContextRef -> CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID+    :: CString -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind+    :: IO CUInt++foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute+    :: ContextRef -> CUInt -> Word64 -> IO AttributeRef++foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind+    :: AttributeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue+    :: AttributeRef -> IO Word64++foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute+    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue+    :: AttributeRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute+    :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName+    :: CString -> IO ModuleRef++foreign import ccall unsafe "LLVMModuleCreateWithNameInContext" moduleCreateWithNameInContext+    :: CString -> ContextRef -> IO ModuleRef++foreign import ccall unsafe "LLVMCloneModule" cloneModule+    :: ModuleRef -> IO ModuleRef++foreign import ccall unsafe "LLVMDisposeModule" disposeModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMGetModuleIdentifier" getModuleIdentifier+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleIdentifier" setModuleIdentifier+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetSourceFileName" getSourceFileName+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetSourceFileName" setSourceFileName+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetDataLayoutStr" getDataLayoutStr+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTarget" getTarget+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMSetTarget" setTarget+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMCopyModuleFlagsMetadata" copyModuleFlagsMetadata+    :: ModuleRef -> (Ptr CSize) -> IO (Ptr ModuleFlagEntry)++foreign import ccall unsafe "LLVMDisposeModuleFlagsMetadata" disposeModuleFlagsMetadata+    :: (Ptr ModuleFlagEntry) -> IO ()++foreign import ccall unsafe "LLVMModuleFlagEntriesGetFlagBehavior" moduleFlagEntriesGetFlagBehavior+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO ModuleFlagBehavior++foreign import ccall unsafe "LLVMModuleFlagEntriesGetKey" moduleFlagEntriesGetKey+    :: (Ptr ModuleFlagEntry) -> CUInt -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMModuleFlagEntriesGetMetadata" moduleFlagEntriesGetMetadata+    :: (Ptr ModuleFlagEntry) -> CUInt -> IO MetadataRef++foreign import ccall unsafe "LLVMGetModuleFlag" getModuleFlag+    :: ModuleRef -> CString -> CSize -> IO MetadataRef++foreign import ccall unsafe "LLVMAddModuleFlag" addModuleFlag+    :: ModuleRef -> ModuleFlagBehavior -> CString -> CSize -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMDumpModule" dumpModule+    :: ModuleRef -> IO ()++foreign import ccall unsafe "LLVMPrintModuleToFile" printModuleToFile+    :: ModuleRef -> CString -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPrintModuleToString" printModuleToString+    :: ModuleRef -> IO CString++foreign import ccall unsafe "LLVMGetModuleInlineAsm" getModuleInlineAsm+    :: ModuleRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetModuleInlineAsm2" setModuleInlineAsm2+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMAppendModuleInlineAsm" appendModuleInlineAsm+    :: ModuleRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMGetInlineAsm" getInlineAsm+    :: TypeRef -> CString -> CSize -> CString -> CSize -> LLVM.Bool -> LLVM.Bool -> InlineAsmDialect -> IO ValueRef++foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext+    :: ModuleRef -> IO ContextRef++foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName+    :: ModuleRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetFirstNamedMetadata" getFirstNamedMetadata+    :: ModuleRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetLastNamedMetadata" getLastNamedMetadata+    :: ModuleRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNextNamedMetadata" getNextNamedMetadata+    :: NamedMDNodeRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetPreviousNamedMetadata" getPreviousNamedMetadata+    :: NamedMDNodeRef -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNamedMetadata" getNamedMetadata+    :: ModuleRef -> CString -> CSize -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetOrInsertNamedMetadata" getOrInsertNamedMetadata+    :: ModuleRef -> CString -> CSize -> IO NamedMDNodeRef++foreign import ccall unsafe "LLVMGetNamedMetadataName" getNamedMetadataName+    :: NamedMDNodeRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands+    :: ModuleRef -> CString -> IO CUInt++foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands+    :: ModuleRef -> CString -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMAddNamedMetadataOperand" addNamedMetadataOperand+    :: ModuleRef -> CString -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetDebugLocDirectory" getDebugLocDirectory+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetDebugLocFilename" getDebugLocFilename+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetDebugLocLine" getDebugLocLine+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetDebugLocColumn" getDebugLocColumn+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMAddFunction" addFunction+    :: ModuleRef -> CString -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm+    :: ModuleRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetTypeKind" getTypeKind+    :: TypeRef -> IO TypeKind++foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext+    :: TypeRef -> IO ContextRef++foreign import ccall unsafe "LLVMPrintTypeToString" printTypeToString+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMInt128TypeInContext" int128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext+    :: ContextRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMInt1Type" int1Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt8Type" int8Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt16Type" int16Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt32Type" int32Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt64Type" int64Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMInt128Type" int128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMIntType" intType+    :: CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMHalfTypeInContext" halfTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMFP128TypeInContext" fP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128TypeInContext" pPCFP128TypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMHalfType" halfType+    :: IO TypeRef++foreign import ccall unsafe "LLVMFloatType" floatType+    :: IO TypeRef++foreign import ccall unsafe "LLVMDoubleType" doubleType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFP128Type" fP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMPPCFP128Type" pPCFP128Type+    :: IO TypeRef++foreign import ccall unsafe "LLVMFunctionType" functionType+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetReturnType" getReturnType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext+    :: ContextRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructType" structType+    :: (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO TypeRef++foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed+    :: ContextRef -> CString -> IO TypeRef++foreign import ccall unsafe "LLVMGetStructName" getStructName+    :: TypeRef -> IO CString++foreign import ccall unsafe "LLVMStructSetBody" structSetBody+    :: TypeRef -> (Ptr TypeRef) -> CUInt -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMCountStructElementTypes" countStructElementTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMStructGetTypeAtIndex" structGetTypeAtIndex+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsLiteralStruct" isLiteralStruct+    :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetElementType" getElementType+    :: TypeRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetSubtypes" getSubtypes+    :: TypeRef -> (Ptr TypeRef) -> IO ()++foreign import ccall unsafe "LLVMGetNumContainedTypes" getNumContainedTypes+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMArrayType" arrayType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMPointerType" pointerType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVectorType" vectorType+    :: TypeRef -> CUInt -> IO TypeRef++foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize+    :: TypeRef -> IO CUInt++foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMTokenTypeInContext" tokenTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMMetadataTypeInContext" metadataTypeInContext+    :: ContextRef -> IO TypeRef++foreign import ccall unsafe "LLVMVoidType" voidType+    :: IO TypeRef++foreign import ccall unsafe "LLVMLabelType" labelType+    :: IO TypeRef++foreign import ccall unsafe "LLVMX86MMXType" x86MMXType+    :: IO TypeRef++foreign import ccall unsafe "LLVMTypeOf" typeOf+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetValueKind" getValueKind+    :: ValueRef -> IO ValueKind++foreign import ccall unsafe "LLVMGetValueName2" getValueName2+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMSetValueName2" setValueName2+    :: ValueRef -> CString -> CSize -> IO ()++foreign import ccall unsafe "LLVMDumpValue" dumpValue+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMPrintValueToString" printValueToString+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsConstant" isConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsUndef" isUndef+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMIsAMDNode" isAMDNode+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsAMDString" isAMDString+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetValueName" getValueName+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetValueName" setValueName+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse+    :: ValueRef -> IO UseRef++foreign import ccall unsafe "LLVMGetNextUse" getNextUse+    :: UseRef -> IO UseRef++foreign import ccall unsafe "LLVMGetUser" getUser+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue+    :: UseRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperand" getOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetOperandUse" getOperandUse+    :: ValueRef -> CUInt -> IO UseRef++foreign import ccall unsafe "LLVMSetOperand" setOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMConstNull" constNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetUndef" getUndef+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsNull" isNull+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInt" constInt+    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision+    :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString+    :: TypeRef -> CString -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize+    :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef++foreign import ccall unsafe "LLVMConstReal" constReal+    :: TypeRef -> CDouble -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString+    :: TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize+    :: TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue+    :: ValueRef -> IO CULLong++foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue+    :: ValueRef -> IO CLLong++foreign import ccall unsafe "LLVMConstRealGetDouble" constRealGetDouble+    :: ValueRef -> (Ptr LLVM.Bool) -> IO CDouble++foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext+    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstString" constString+    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsConstantString" isConstantString+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetAsString" getAsString+    :: ValueRef -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstStruct" constStruct+    :: (Ptr ValueRef) -> CUInt -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstArray" constArray+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct+    :: TypeRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetElementAsConstant" getElementAsConstant+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstVector" constVector+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMAlignOf" alignOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMSizeOf" sizeOf+    :: TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNeg" constNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFNeg" constFNeg+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNot" constNot+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAdd" constAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFAdd" constFAdd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSub" constSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFSub" constFSub+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstMul" constMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFMul" constFMul+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUDiv" constUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactUDiv" constExactUDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSDiv" constSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFDiv" constFDiv+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstURem" constURem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSRem" constSRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFRem" constFRem+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAnd" constAnd+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstOr" constOr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstXor" constXor+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstICmp" constICmp+    :: IntPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFCmp" constFCmp+    :: RealPredicate -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShl" constShl+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstLShr" constLShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAShr" constAShr+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstGEP" constGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP+    :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstTrunc" constTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExt" constSExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExt" constZExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPExt" constFPExt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstBitCast" constBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstAddrSpaceCast" constAddrSpaceCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstIntCast" constIntCast+    :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMConstFPCast" constFPCast+    :: ValueRef -> TypeRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstSelect" constSelect+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement+    :: ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector+    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue+    :: ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue+    :: ValueRef -> ValueRef -> (Ptr CUInt) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBlockAddress" blockAddress+    :: ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm+    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent+    :: ValueRef -> IO ModuleRef++foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetLinkage" getLinkage+    :: ValueRef -> IO Linkage++foreign import ccall unsafe "LLVMSetLinkage" setLinkage+    :: ValueRef -> Linkage -> IO ()++foreign import ccall unsafe "LLVMGetSection" getSection+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetSection" setSection+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMGetVisibility" getVisibility+    :: ValueRef -> IO Visibility++foreign import ccall unsafe "LLVMSetVisibility" setVisibility+    :: ValueRef -> Visibility -> IO ()++foreign import ccall unsafe "LLVMGetDLLStorageClass" getDLLStorageClass+    :: ValueRef -> IO DLLStorageClass++foreign import ccall unsafe "LLVMSetDLLStorageClass" setDLLStorageClass+    :: ValueRef -> DLLStorageClass -> IO ()++foreign import ccall unsafe "LLVMGetUnnamedAddress" getUnnamedAddress+    :: ValueRef -> IO UnnamedAddr++foreign import ccall unsafe "LLVMSetUnnamedAddress" setUnnamedAddress+    :: ValueRef -> UnnamedAddr -> IO ()++foreign import ccall unsafe "LLVMGlobalGetValueType" globalGetValueType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMHasUnnamedAddr" hasUnnamedAddr+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetUnnamedAddr" setUnnamedAddr+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetAlignment" getAlignment+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetAlignment" setAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGlobalSetMetadata" globalSetMetadata+    :: ValueRef -> CUInt -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMGlobalEraseMetadata" globalEraseMetadata+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGlobalClearMetadata" globalClearMetadata+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGlobalCopyAllMetadata" globalCopyAllMetadata+    :: ValueRef -> (Ptr CSize) -> IO (Ptr ValueMetadataEntry)++foreign import ccall unsafe "LLVMDisposeValueMetadataEntries" disposeValueMetadataEntries+    :: (Ptr ValueMetadataEntry) -> IO ()++foreign import ccall unsafe "LLVMValueMetadataEntriesGetKind" valueMetadataEntriesGetKind+    :: (Ptr ValueMetadataEntry) -> CUInt -> IO CUInt++foreign import ccall unsafe "LLVMValueMetadataEntriesGetMetadata" valueMetadataEntriesGetMetadata+    :: (Ptr ValueMetadataEntry) -> CUInt -> IO MetadataRef++foreign import ccall unsafe "LLVMAddGlobal" addGlobal+    :: ModuleRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace+    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal+    :: ModuleRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInitializer" getInitializer+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetInitializer" setInitializer+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetThreadLocalMode" getThreadLocalMode+    :: ValueRef -> IO ThreadLocalMode++foreign import ccall unsafe "LLVMSetThreadLocalMode" setThreadLocalMode+    :: ValueRef -> ThreadLocalMode -> IO ()++foreign import ccall unsafe "LLVMIsExternallyInitialized" isExternallyInitialized+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetExternallyInitialized" setExternallyInitialized+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddAlias" addAlias+    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobalAlias" getNamedGlobalAlias+    :: ModuleRef -> CString -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobalAlias" getFirstGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobalAlias" getLastGlobalAlias+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobalAlias" getNextGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobalAlias" getPreviousGlobalAlias+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasGetAliasee" aliasGetAliasee+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMAliasSetAliasee" aliasSetAliasee+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMHasPersonalityFn" hasPersonalityFn+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetPersonalityFn" getPersonalityFn+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetPersonalityFn" setPersonalityFn+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMLookupIntrinsicID" lookupIntrinsicID+    :: CString -> CSize -> IO CUInt++foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIntrinsicDeclaration" getIntrinsicDeclaration+    :: ModuleRef -> CUInt -> (Ptr TypeRef) -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMIntrinsicGetType" intrinsicGetType+    :: ContextRef -> CUInt -> (Ptr TypeRef) -> CSize -> IO TypeRef++foreign import ccall unsafe "LLVMIntrinsicGetName" intrinsicGetName+    :: CUInt -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMIntrinsicCopyOverloadedName" intrinsicCopyOverloadedName+    :: CUInt -> (Ptr TypeRef) -> CSize -> (Ptr CSize) -> IO CString++foreign import ccall unsafe "LLVMIntrinsicIsOverloaded" intrinsicIsOverloaded+    :: CUInt -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetGC" getGC+    :: ValueRef -> IO CString++foreign import ccall unsafe "LLVMSetGC" setGC+    :: ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr+    :: ValueRef -> CString -> CString -> IO ()++foreign import ccall unsafe "LLVMCountParams" countParams+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetParams" getParams+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMGetParam" getParam+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetParamParent" getParamParent+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastParam" getLastParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextParam" getNextParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddGlobalIFunc" addGlobalIFunc+    :: ModuleRef -> CString -> CSize -> TypeRef -> CUInt -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNamedGlobalIFunc" getNamedGlobalIFunc+    :: ModuleRef -> CString -> CSize -> IO ValueRef++foreign import ccall unsafe "LLVMGetFirstGlobalIFunc" getFirstGlobalIFunc+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastGlobalIFunc" getLastGlobalIFunc+    :: ModuleRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNextGlobalIFunc" getNextGlobalIFunc+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousGlobalIFunc" getPreviousGlobalIFunc+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetGlobalIFuncResolver" getGlobalIFuncResolver+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetGlobalIFuncResolver" setGlobalIFuncResolver+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMEraseGlobalIFunc" eraseGlobalIFunc+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMRemoveGlobalIFunc" removeGlobalIFunc+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext2" mDStringInContext2+    :: ContextRef -> CString -> CSize -> IO MetadataRef++foreign import ccall unsafe "LLVMMDNodeInContext2" mDNodeInContext2+    :: ContextRef -> (Ptr MetadataRef) -> CSize -> IO MetadataRef++foreign import ccall unsafe "LLVMMetadataAsValue" metadataAsValue+    :: ContextRef -> MetadataRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueAsMetadata" valueAsMetadata+    :: ValueRef -> IO MetadataRef++foreign import ccall unsafe "LLVMGetMDString" getMDString+    :: ValueRef -> (Ptr CUInt) -> IO CString++foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetMDNodeOperands" getMDNodeOperands+    :: ValueRef -> (Ptr ValueRef) -> IO ()++foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext+    :: ContextRef -> CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDString" mDString+    :: CString -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext+    :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMMDNode" mDNode+    :: (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName+    :: BasicBlockRef -> IO CString++foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock+    :: BasicBlockRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertExistingBasicBlockAfterInsertBlock" insertExistingBasicBlockAfterInsertBlock+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAppendExistingBasicBlock" appendExistingBasicBlock+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMCreateBasicBlockInContext" createBasicBlockInContext+    :: ContextRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext+    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock+    :: ValueRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext+    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock+    :: BasicBlockRef -> CString -> IO BasicBlockRef++foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent+    :: BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter+    :: BasicBlockRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction+    :: BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMHasMetadata" hasMetadata+    :: ValueRef -> IO CInt++foreign import ccall unsafe "LLVMGetMetadata" getMetadata+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetMetadata" setMetadata+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionGetAllMetadataOtherThanDebugLoc" instructionGetAllMetadataOtherThanDebugLoc+    :: ValueRef -> (Ptr CSize) -> IO (Ptr ValueMetadataEntry)++foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMInstructionRemoveFromParent" instructionRemoveFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent+    :: ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode+    :: ValueRef -> IO Opcode++foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate+    :: ValueRef -> IO IntPredicate++foreign import ccall unsafe "LLVMGetFCmpPredicate" getFCmpPredicate+    :: ValueRef -> IO RealPredicate++foreign import ccall unsafe "LLVMInstructionClone" instructionClone+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsATerminatorInst" isATerminatorInst+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMGetNumArgOperands" getNumArgOperands+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv+    :: ValueRef -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment+    :: ValueRef -> CUInt -> CUInt -> IO ()++foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute+    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount+    :: ValueRef -> AttributeIndex -> IO CUInt++foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes+    :: ValueRef -> AttributeIndex -> (Ptr AttributeRef) -> IO ()++foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef++foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute+    :: ValueRef -> AttributeIndex -> CUInt -> IO ()++foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute+    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()++foreign import ccall unsafe "LLVMGetCalledFunctionType" getCalledFunctionType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMIsTailCall" isTailCall+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetTailCall" setTailCall+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetNormalDest" getNormalDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetUnwindDest" getUnwindDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetNormalDest" setNormalDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMSetUnwindDest" setUnwindDest+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumSuccessors" getNumSuccessors+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetSuccessor" getSuccessor+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMSetSuccessor" setSuccessor+    :: ValueRef -> CUInt -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMIsConditional" isConditional+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetCondition" getCondition+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetCondition" setCondition+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest+    :: ValueRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetAllocatedType" getAllocatedType+    :: ValueRef -> IO TypeRef++foreign import ccall unsafe "LLVMIsInBounds" isInBounds+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddIncoming" addIncoming+    :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO ()++foreign import ccall unsafe "LLVMCountIncoming" countIncoming+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock+    :: ValueRef -> CUInt -> IO BasicBlockRef++foreign import ccall unsafe "LLVMGetNumIndices" getNumIndices+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetIndices" getIndices+    :: ValueRef -> IO (Ptr CUInt)++foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext+    :: ContextRef -> IO BuilderRef++foreign import ccall unsafe "LLVMCreateBuilder" createBuilder+    :: IO BuilderRef++foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder+    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBuilderBefore+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionBuilderAtEnd+    :: BuilderRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock+    :: BuilderRef -> IO BasicBlockRef++foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName+    :: BuilderRef -> ValueRef -> CString -> IO ()++foreign import ccall unsafe "LLVMDisposeBuilder" disposeBuilder+    :: BuilderRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation2" getCurrentDebugLocation2+    :: BuilderRef -> IO MetadataRef++foreign import ccall unsafe "LLVMSetCurrentDebugLocation2" setCurrentDebugLocation2+    :: BuilderRef -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuilderGetDefaultFPMathTag" builderGetDefaultFPMathTag+    :: BuilderRef -> IO MetadataRef++foreign import ccall unsafe "LLVMBuilderSetDefaultFPMathTag" builderSetDefaultFPMathTag+    :: BuilderRef -> MetadataRef -> IO ()++foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation+    :: BuilderRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildRet" buildRet+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet+    :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBr" buildBr+    :: BuilderRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr+    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr+    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInvoke2" buildInvoke2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable+    :: BuilderRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildResume" buildResume+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupRet" buildCleanupRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchRet" buildCatchRet+    :: BuilderRef -> ValueRef -> BasicBlockRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchPad" buildCatchPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCleanupPad" buildCleanupPad+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCatchSwitch" buildCatchSwitch+    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMAddCase" addCase+    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMAddDestination" addDestination+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumClauses" getNumClauses+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetClause" getClause+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMAddClause" addClause+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMIsCleanup" isCleanup+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetCleanup" setCleanup+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMAddHandler" addHandler+    :: ValueRef -> BasicBlockRef -> IO ()++foreign import ccall unsafe "LLVMGetNumHandlers" getNumHandlers+    :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetHandlers" getHandlers+    :: ValueRef -> (Ptr BasicBlockRef) -> IO ()++foreign import ccall unsafe "LLVMGetArgOperand" getArgOperand+    :: ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMSetArgOperand" setArgOperand+    :: ValueRef -> CUInt -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMGetParentCatchSwitch" getParentCatchSwitch+    :: ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMSetParentCatchSwitch" setParentCatchSwitch+    :: ValueRef -> ValueRef -> IO ()++foreign import ccall unsafe "LLVMBuildAdd" buildAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSub" buildSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFSub" buildFSub+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMul" buildMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFMul" buildFMul+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactUDiv" buildExactUDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildURem" buildURem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSRem" buildSRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFRem" buildFRem+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShl" buildShl+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLShr" buildLShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAShr" buildAShr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAnd" buildAnd+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildOr" buildOr+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildXor" buildXor+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp+    :: BuilderRef -> Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNeg" buildNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildNot" buildNot+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemSet" buildMemSet+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemCpy" buildMemCpy+    :: BuilderRef -> ValueRef -> CUInt -> ValueRef -> CUInt -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildMemMove" buildMemMove+    :: BuilderRef -> ValueRef -> CUInt -> ValueRef -> CUInt -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFree" buildFree+    :: BuilderRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad" buildLoad+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildLoad2" buildLoad2+    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP" buildGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGEP2" buildGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInBoundsGEP2" buildInBoundsGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStructGEP2" buildStructGEP2+    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr+    :: BuilderRef -> CString -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMGetVolatile" getVolatile+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetVolatile" setVolatile+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetOrdering" getOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetOrdering" setOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExt" buildZExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExt" buildSExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAddrSpaceCast" buildAddrSpaceCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCast" buildCast+    :: BuilderRef -> Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIntCast2" buildIntCast2+    :: BuilderRef -> ValueRef -> TypeRef -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildICmp" buildICmp+    :: BuilderRef -> IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp+    :: BuilderRef -> RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPhi" buildPhi+    :: BuilderRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall" buildCall+    :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildCall2" buildCall2+    :: BuilderRef -> TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildSelect" buildSelect+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue+    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue+    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull+    :: BuilderRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff+    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildFence" buildFence+    :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicRMW" buildAtomicRMW+    :: BuilderRef -> AtomicRMWBinOp -> ValueRef -> ValueRef -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMBuildAtomicCmpXchg" buildAtomicCmpXchg+    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> AtomicOrdering -> AtomicOrdering -> LLVM.Bool -> IO ValueRef++foreign import ccall unsafe "LLVMIsAtomicSingleThread" isAtomicSingleThread+    :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetAtomicSingleThread" setAtomicSingleThread+    :: ValueRef -> LLVM.Bool -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgSuccessOrdering" getCmpXchgSuccessOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgSuccessOrdering" setCmpXchgSuccessOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMGetCmpXchgFailureOrdering" getCmpXchgFailureOrdering+    :: ValueRef -> IO AtomicOrdering++foreign import ccall unsafe "LLVMSetCmpXchgFailureOrdering" setCmpXchgFailureOrdering+    :: ValueRef -> AtomicOrdering -> IO ()++foreign import ccall unsafe "LLVMCreateModuleProviderForExistingModule" createModuleProviderForExistingModule+    :: ModuleRef -> IO ModuleProviderRef++foreign import ccall unsafe "LLVMDisposeModuleProvider" disposeModuleProvider+    :: ModuleProviderRef -> IO ()++foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile+    :: CString -> (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN+    :: (Ptr MemoryBufferRef) -> (Ptr CString) -> IO LLVM.Bool++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRange" createMemoryBufferWithMemoryRange+    :: CString -> CSize -> CString -> LLVM.Bool -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMCreateMemoryBufferWithMemoryRangeCopy" createMemoryBufferWithMemoryRangeCopy+    :: CString -> CSize -> CString -> IO MemoryBufferRef++foreign import ccall unsafe "LLVMGetBufferStart" getBufferStart+    :: MemoryBufferRef -> IO CString++foreign import ccall unsafe "LLVMGetBufferSize" getBufferSize+    :: MemoryBufferRef -> IO CSize++foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer+    :: MemoryBufferRef -> IO ()++foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry+    :: IO PassRegistryRef++foreign import ccall unsafe "LLVMCreatePassManager" createPassManager+    :: IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule+    :: ModuleRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMCreateFunctionPassManager" createFunctionPassManager+    :: ModuleProviderRef -> IO PassManagerRef++foreign import ccall unsafe "LLVMRunPassManager" runPassManager+    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager+    :: PassManagerRef -> ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager+    :: PassManagerRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager+    :: PassManagerRef -> IO ()++foreign import ccall unsafe "LLVMStartMultithreaded" startMultithreaded+    :: IO LLVM.Bool++foreign import ccall unsafe "LLVMStopMultithreaded" stopMultithreaded+    :: IO ()++foreign import ccall unsafe "LLVMIsMultithreaded" isMultithreaded+    :: IO LLVM.Bool
src/LLVM/FFI/Core.hsc view
@@ -4,1827 +4,2282 @@ {-# LANGUAGE DeriveDataTypeable #-}  -- |--- Module:      LLVM.FFI.Core--- Copyright:   Bryan O'Sullivan 2007, 2008--- License:     BSD-style (see the file LICENSE)------ Maintainer:  bos@serpentine.com--- Stability:   experimental--- Portability: requires GHC 6.8, LLVM------ This module provides direct access to the LLVM C bindings.--module LLVM.FFI.Core-    (-      initializeCore-    , Version.version--    -- * Boolean values-    , LLVM.Bool(LLVM.Bool)-    , LLVM.false-    , LLVM.true-    , LLVM.consBool-    , LLVM.deconsBool--    -- * Error handling-    , disposeMessage--    -- * Context functions-    , Context-    , ContextRef-    , contextCreate-    , contextDispose-    , getGlobalContext--    , getMDKindID-    , getMDKindIDInContext--      -- * Modules-    , Module-    , ModuleRef-    , moduleCreateWithName-    , moduleCreateWithNameInContext-    , disposeModule-    , ptrDisposeModule--    , getDataLayout-    , setDataLayout--    , getTarget-    , setTarget--    , defaultTargetTriple-    , hostTriple--    , dumpModule--    , setModuleInlineAsm-    , getModuleContext--    -- * Types-    , Type-    , TypeRef-    , TypeKind(..)--    , getTypeKind-    , typeIsSized-    , getTypeContext--    -- ** Integer types-    , int1TypeInContext-    , int8TypeInContext-    , int16TypeInContext-    , int32TypeInContext-    , int64TypeInContext-    , intTypeInContext--    , int1Type-    , int8Type-    , int16Type-    , int32Type-    , int64Type-    , integerType-    , getIntTypeWidth--    -- ** Real types-    , floatTypeInContext-    , doubleTypeInContext-    , x86FP80TypeInContext-    , fp128TypeInContext-    , ppcFP128TypeInContext--    , floatType-    , doubleType-    , x86FP80Type-    , fp128Type-    , ppcFP128Type--    -- ** Function types-    , functionType-    , isFunctionVarArg-    , getReturnType-    , countParamTypes-    , getParamTypes--    -- ** Struct types-    , structTypeInContext-    , structType-    , structCreateNamed-    , getStructName-    , structSetBody--    , countStructElementTypes-    , getStructElementTypes-    , isPackedStruct-    , isOpaqueStruct--    , getTypeByName--    -- ** Array, pointer, and vector types-    , arrayType-    , pointerType-    , vectorType--    , getElementType-    , getArrayLength-    , getPointerAddressSpace-    , getVectorSize--    -- ** Other types-    , voidTypeInContext-    , labelTypeInContext-    , x86MMXTypeInContext--    , voidType-    , labelType-    , x86MMXType--    -- * Values-    , Value-    , ValueRef-    , typeOf-    , getValueName-    , setValueName-    , dumpValue-    , replaceAllUsesWith-    , hasMetadata-    , getMetadata-    , setMetadata--    -- ** Uses-    , OpaqueUse-    , UseRef-    , getFirstUse-    , getNextUse-    , getUser-    , getUsedValue--    -- ** Users-    , getOperand-    , setOperand-    , getNumOperands--    -- ** Constants-    , constNull-    , constAllOnes-    , getUndef-    , isConstant-    , isNull-    , isUndef-    , constPointerNull--    -- ** Metadata-    , mDStringInContext-    , mDString-    , mDNodeInContext-    , mDNode-    , getMDString---    , getMDNodeNumOperands---    , getMDNodeOperand-    , getNamedMetadataNumOperands-    , getNamedMetadataOperands--    -- ** Scalar constants-    , constInt-    , constIntOfArbitraryPrecision-    , constIntOfString-    , constIntOfStringAndSize-    , constReal-    , constRealOfString-    , constRealOfStringAndSize-    , constIntGetZExtValue-    , constIntGetSExtValue--    -- ** Composite constants-    , constStringInContext-    , constStructInContext-    , constString-    , constArray-    , constStruct-    , constNamedStruct-    , constVector--    -- ** Constant Expressions-    , getConstOpcode-    , alignOf-    , sizeOf-    , constNeg-    , constNUWNeg-    , constNSWNeg-    , constFNeg-    , constNot-    , constAdd-    , constNSWAdd-    , constNUWAdd-    , constFAdd-    , constSub-    , constNSWSub-    , constNUWSub-    , constFSub-    , constMul-    , constNSWMul-    , constNUWMul-    , constFMul-    , constUDiv-    , constSDiv-    , constExactSDiv-    , constFDiv-    , constURem-    , constSRem-    , constFRem-    , constAnd-    , constOr-    , constXor-    , constICmp-    , constFCmp-    , constShl-    , constLShr-    , constAShr-    , constGEP-    , constInBoundsGEP-    , constTrunc-    , constSExt-    , constZExt-    , constFPTrunc-    , constFPExt-    , constUIToFP-    , constSIToFP-    , constFPToUI-    , constFPToSI-    , constPtrToInt-    , constIntToPtr-    , constBitCast-    , constZExtOrBitCast-    , constSExtOrBitCast-    , constTruncOrBitCast-    , constPointerCast-    , constIntCast-    , constFPCast-    , constSelect-    , constExtractElement-    , constInsertElement-    , constShuffleVector-    , constExtractValue-    , constInsertValue-    , constInlineAsm-    , blockAddress--    -- ** Floating point attributes-    , setFastMath-    , setHasUnsafeAlgebra-    , setHasNoNaNs-    , setHasNoInfs-    , setHasNoSignedZeros-    , setHasAllowReciprocal-    , setHasAllowReassoc-    , setHasApproxFunc--    -- ** Support operations and types-    , Linkage(..)-    , fromLinkage-    , toLinkage--    , Visibility(..)-    , fromVisibility-    , toVisibility--    -- ** Global variables, functions, and aliases (globals)-    , getGlobalParent-    , isDeclaration-    , getLinkage-    , setLinkage-    , getSection-    , setSection-    , getVisibility-    , setVisibility-    , getAlignment-    , setAlignment--    -- ** Global variables-    , addGlobal-    , addGlobalInAddressSpace-    , getNamedGlobal-    , getFirstGlobal-    , getLastGlobal-    , getNextGlobal-    , getPreviousGlobal-    , deleteGlobal-    , getInitializer-    , setInitializer-    , isThreadLocal-    , setThreadLocal-    , isGlobalConstant-    , setGlobalConstant--    -- ** Aliases-    , addAlias--    -- * Parameter passing-    , Attribute-    , AttributeKind(..)--    -- ** Calling conventions-    , CallingConvention(..)-    , fromCallingConvention-    , toCallingConvention--    -- ** Functions-    , addFunction-    , getNamedFunction-    , getFirstFunction-    , getLastFunction-    , getNextFunction-    , getPreviousFunction-    , deleteFunction-    , getIntrinsicID-    , getFunctionCallConv-    , setFunctionCallConv-    , getGC-    , setGC-    , AttributeIndex(AttributeIndex)-    , attributeReturnIndex, attributeFunctionIndex-    , getEnumAttributeKindForName-    , getLastEnumAttributeKind-    , createEnumAttribute-    , getEnumAttributeKind-    , getEnumAttributeValue-    , createStringAttribute-    , getStringAttributeKind-    , getStringAttributeValue-    , isEnumAttribute-    , isStringAttribute-    , addAttributeAtIndex-    , getAttributeCountAtIndex-    , getAttributesAtIndex-    , getEnumAttributeAtIndex-    , getStringAttributeAtIndex-    , removeEnumAttributeAtIndex-    , removeStringAttributeAtIndex-    , addTargetDependentFunctionAttr-    , addCallSiteAttribute-    , getCallSiteAttributeCount-    , getCallSiteAttributes-    , getCallSiteEnumAttribute-    , getCallSiteStringAttribute-    , removeCallSiteEnumAttribute-    , removeCallSiteStringAttribute-    , getCalledValue--    -- ** Parameters-    , countParams-    , getParams-    , getParam-    , getParamParent-    , getFirstParam-    , getLastParam-    , getNextParam-    , getPreviousParam-    , setParamAlignment--    -- ** Basic blocks-    , BasicBlock-    , BasicBlockRef-    , basicBlockAsValue-    , valueIsBasicBlock-    , valueAsBasicBlock-    , getBasicBlockName-    , getBasicBlockParent-    , getBasicBlockTerminator-    , countBasicBlocks-    , getBasicBlocks-    , getFirstBasicBlock-    , getLastBasicBlock-    , getNextBasicBlock-    , getPreviousBasicBlock-    , getEntryBasicBlock-    , appendBasicBlockInContext-    , insertBasicBlockInContext-    , appendBasicBlock-    , insertBasicBlock-    , deleteBasicBlock-    , removeBasicBlockFromParent-    , moveBasicBlockBefore-    , moveBasicBlockAfter-    , getFirstInstruction-    , getLastInstruction--    -- ** Instructions-    , getInstructionParent-    , getNextInstruction-    , getPreviousInstruction-    , instructionEraseFromParent-    , getInstructionOpcode-    , getICmpPredicate--    -- ** Call Sites-    , getInstructionCallConv-    , setInstructionCallConv-    , setInstrParamAlignment--    -- ** Call Instructions (only)-    , isTailCall-    , setTailCall--    -- ** Switch Instructions (only)-    , getSwitchDefaultDest--    -- ** Phi nodes-    , addIncoming-    , countIncoming-    , getIncomingValue-    , getIncomingBlock--    -- * Instruction building-    , Builder-    , BuilderRef-    , createBuilderInContext-    , createBuilder-    , positionBuilder-    , positionBefore-    , positionAtEnd-    , getInsertBlock-    , clearInsertionPosition-    , insertIntoBuilder-    , insertIntoBuilderWithName-    , ptrDisposeBuilder--    -- ** Metadata-    , setCurrentDebugLocation-    , getCurrentDebugLocation-    , setInstDebugLocation--    -- ** Terminators-    , buildRetVoid-    , buildRet-    , buildAggregateRet-    , buildBr-    , buildCondBr-    , buildSwitch-    , buildIndirectBr-    , buildInvoke-    , buildLandingPad-    , buildResume-    , buildUnreachable--    , addCase-    , addDestination-    , addClause-    , setCleanup--    -- ** Arithmetic-    , buildAdd-    , buildNSWAdd-    , buildNUWAdd-    , buildFAdd-    , buildSub-    , buildNSWSub-    , buildNUWSub-    , buildFSub-    , buildMul-    , buildNSWMul-    , buildNUWMul-    , buildFMul-    , buildUDiv-    , buildSDiv-    , buildExactSDiv-    , buildFDiv-    , buildURem-    , buildSRem-    , buildFRem-    , buildShl-    , buildLShr-    , buildAShr-    , buildAnd-    , buildOr-    , buildXor-    , buildBinOp-    , buildNeg-    , buildNSWNeg-    , buildNUWNeg-    , buildFNeg-    , buildNot--    -- ** Memory-    , buildMalloc-    , buildArrayMalloc-    , buildAlloca-    , buildArrayAlloca-    , buildFree-    , buildLoad-    , buildStore-    , buildGEP-    , buildInBoundsGEP-    , buildStructGEP-    , buildGlobalString-    , buildGlobalStringPtr--    -- ** Casts-    , buildTrunc-    , buildZExt-    , buildSExt-    , buildFPToUI-    , buildFPToSI-    , buildUIToFP-    , buildSIToFP-    , buildFPTrunc-    , buildFPExt-    , buildPtrToInt-    , buildIntToPtr-    , buildBitCast-    , buildZExtOrBitCast-    , buildSExtOrBitCast-    , buildTruncOrBitCast-    , buildCast-    , buildPointerCast-    , buildIntCast-    , buildFPCast--    -- ** Comparisons-    , buildICmp-    , buildFCmp--    -- ** Miscellaneous instructions-    , buildPhi-    , buildCall-    , buildSelect-    , buildVAArg-    , buildExtractElement-    , buildInsertElement-    , buildShuffleVector-    , buildExtractValue-    , buildInsertValue-    , buildIsNull-    , buildIsNotNull-    , buildPtrDiff--    -- * Memory buffers-    , MemoryBuffer-    , MemoryBufferRef-    , createMemoryBufferWithContentsOfFile-    , createMemoryBufferWithSTDIN-    , disposeMemoryBuffer--    -- ** PassRegistry-    , PassRegistry-    , PassRegistryRef-    , getGlobalPassRegistry--    -- ** Pass manager-    , PassManager-    , PassManagerRef-    , ptrDisposePassManager--    , createPassManager-    , createFunctionPassManagerForModule-    , runPassManager-    , initializeFunctionPassManager-    , runFunctionPassManager-    , finalizeFunctionPassManager-    , disposePassManager--    -- ** Functions from extras.cpp-    , getNumUses-    , instGetOpcode-    , cmpInstGetPredicate--    ) where--import qualified LLVM.FFI.Version as Version-import qualified LLVM.FFI.Base as LLVM--import qualified Foreign.C.Types as C-import Foreign.C.String (CString)-import Foreign.Ptr (Ptr, FunPtr)--import Data.Typeable (Typeable)--import Data.Word (Word32, Word64)--import Prelude-         (IO, Eq, Ord, Int, Bounded, Enum, Show, Read, String,-          ($), (++), (.), error,-           fmap, fromIntegral, show, toEnum, )---type CDouble  = C.CDouble-type CInt     = C.CInt-type CUInt    = C.CUInt-type CLLong   = C.CLLong-type CULLong  = C.CULLong---#include <llvm/Config/llvm-config.h>-#include <llvm-c/Core.h>---data Module-    deriving (Typeable)-type ModuleRef = Ptr Module--data Type-    deriving (Typeable)-type TypeRef = Ptr Type--data BasicBlock-    deriving (Typeable)-type BasicBlockRef = Ptr BasicBlock--data Value-    deriving (Typeable)-type ValueRef = Ptr Value--data OpaqueUse-    deriving (Typeable)-type UseRef = Ptr OpaqueUse--data Builder-    deriving (Typeable)-type BuilderRef = Ptr Builder--data MemoryBuffer-    deriving (Typeable)-type MemoryBufferRef = Ptr MemoryBuffer--data PassManager-    deriving (Typeable)-type PassManagerRef = Ptr PassManager--data PassRegistry-    deriving (Typeable)-type PassRegistryRef = Ptr PassRegistry--data Context-    deriving (Typeable)-type ContextRef = Ptr Context--data Attribute-    deriving (Typeable)-type AttributeRef = Ptr Attribute--newtype AttributeIndex = AttributeIndex (#type LLVMAttributeIndex)--attributeReturnIndex, attributeFunctionIndex :: AttributeIndex-attributeReturnIndex   = AttributeIndex (#const LLVMAttributeReturnIndex)-attributeFunctionIndex = AttributeIndex (#const LLVMAttributeFunctionIndex)---defaultTargetTriple, hostTriple :: String-defaultTargetTriple = (#const_str LLVM_DEFAULT_TARGET_TRIPLE)-hostTriple          = (#const_str LLVM_HOST_TRIPLE)---data TypeKind-    = VoidTypeKind-    | FloatTypeKind-    | DoubleTypeKind-    | X86_FP80TypeKind-    | FP128TypeKind-    | PPC_FP128TypeKind-    | LabelTypeKind-    | IntegerTypeKind-    | FunctionTypeKind-    | StructTypeKind-    | ArrayTypeKind-    | PointerTypeKind-    | OpaqueTypeKind-    | VectorTypeKind-    deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable)--getTypeKind :: TypeRef -> IO TypeKind-getTypeKind = fmap (toEnum . fromIntegral) . getTypeKindCUInt--data CallingConvention = C-                       | Fast-                       | Cold-                       | X86StdCall-                       | X86FastCall-                       | GHC-                         deriving (Show, Eq, Ord, Enum, Bounded, Typeable)--fromCallingConvention :: CallingConvention -> CUInt-fromCallingConvention c =-    case c of-        C -> (#const LLVMCCallConv)-        Fast -> (#const LLVMFastCallConv)-        Cold -> (#const LLVMColdCallConv)-        X86StdCall -> (#const LLVMX86FastcallCallConv)-        X86FastCall -> (#const LLVMX86StdcallCallConv)-        GHC -> 10--toCallingConvention :: CUInt -> CallingConvention-toCallingConvention c =-    case c of-        (#const LLVMCCallConv) -> C-        (#const LLVMFastCallConv) -> Fast-        (#const LLVMColdCallConv) -> Cold-        (#const LLVMX86StdcallCallConv) -> X86StdCall-        (#const LLVMX86FastcallCallConv) -> X86FastCall-        10 -> GHC-        _ ->-            error $ "LLVM.Core.FFI.toCallingConvention: " ++-                                "unsupported calling convention" ++ show c---- |An enumeration for the kinds of linkage for global values.-data Linkage-    = ExternalLinkage     -- ^Externally visible function-    | AvailableExternallyLinkage-    | LinkOnceAnyLinkage  -- ^Keep one copy of function when linking (inline)-    | LinkOnceODRLinkage  -- ^Same, but only replaced by something equivalent.-    | LinkOnceODRAutoHideLinkage -- ^Like LinkOnceODR, but possibly hidden.-    | WeakAnyLinkage      -- ^Keep one copy of named function when linking (weak)-    | WeakODRLinkage      -- ^Same, but only replaced by something equivalent.-    | AppendingLinkage    -- ^Special purpose, only applies to global arrays-    | InternalLinkage     -- ^Rename collisions when linking (static functions)-    | PrivateLinkage      -- ^Like Internal, but omit from symbol table-    | DLLImportLinkage    -- ^Function to be imported from DLL-    | DLLExportLinkage    -- ^Function to be accessible from DLL-    | ExternalWeakLinkage -- ^ExternalWeak linkage description-    | GhostLinkage        -- ^Stand-in functions for streaming fns from BC files-    | CommonLinkage       -- ^Tentative definitions-    | LinkerPrivateLinkage -- ^Like Private, but linker removes.-    | LinkerPrivateWeakLinkage -- ^Like LinkerPrivate, but is weak.-    deriving (Show, Eq, Ord, Enum, Typeable)--fromLinkage :: Linkage -> CUInt-fromLinkage c =-    case c of-        ExternalLinkage             -> (#const LLVMExternalLinkage)-        AvailableExternallyLinkage  -> (#const LLVMAvailableExternallyLinkage)-        LinkOnceAnyLinkage          -> (#const LLVMLinkOnceAnyLinkage)-        LinkOnceODRLinkage          -> (#const LLVMLinkOnceODRLinkage)-        LinkOnceODRAutoHideLinkage  -> (#const LLVMLinkOnceODRAutoHideLinkage)-        WeakAnyLinkage              -> (#const LLVMWeakAnyLinkage)-        WeakODRLinkage              -> (#const LLVMWeakODRLinkage)-        AppendingLinkage            -> (#const LLVMAppendingLinkage)-        InternalLinkage             -> (#const LLVMInternalLinkage)-        PrivateLinkage              -> (#const LLVMPrivateLinkage)-        DLLImportLinkage            -> (#const LLVMDLLImportLinkage)-        DLLExportLinkage            -> (#const LLVMDLLExportLinkage)-        ExternalWeakLinkage         -> (#const LLVMExternalWeakLinkage)-        GhostLinkage                -> (#const LLVMGhostLinkage)-        CommonLinkage               -> (#const LLVMCommonLinkage)-        LinkerPrivateLinkage        -> (#const LLVMLinkerPrivateLinkage)-        LinkerPrivateWeakLinkage    -> (#const LLVMLinkerPrivateWeakLinkage)--toLinkage :: CUInt -> Linkage-toLinkage c =-    case c of-        (#const LLVMExternalLinkage)             -> ExternalLinkage-        (#const LLVMAvailableExternallyLinkage)  -> AvailableExternallyLinkage-        (#const LLVMLinkOnceAnyLinkage)          -> LinkOnceAnyLinkage-        (#const LLVMLinkOnceODRLinkage)          -> LinkOnceODRLinkage-        (#const LLVMLinkOnceODRAutoHideLinkage)  -> LinkOnceODRAutoHideLinkage-        (#const LLVMWeakAnyLinkage)              -> WeakAnyLinkage-        (#const LLVMWeakODRLinkage)              -> WeakODRLinkage-        (#const LLVMAppendingLinkage)            -> AppendingLinkage-        (#const LLVMInternalLinkage)             -> InternalLinkage-        (#const LLVMPrivateLinkage)              -> PrivateLinkage-        (#const LLVMDLLImportLinkage)            -> DLLImportLinkage-        (#const LLVMDLLExportLinkage)            -> DLLExportLinkage-        (#const LLVMExternalWeakLinkage)         -> ExternalWeakLinkage-        (#const LLVMGhostLinkage)                -> GhostLinkage-        (#const LLVMCommonLinkage)               -> CommonLinkage-        (#const LLVMLinkerPrivateLinkage)        -> LinkerPrivateLinkage-        (#const LLVMLinkerPrivateWeakLinkage)    -> LinkerPrivateWeakLinkage-        _ -> error "toLinkage: bad value"---- |An enumeration for the kinds of visibility of global values.-data Visibility-    = DefaultVisibility   -- ^The GV is visible-    | HiddenVisibility    -- ^The GV is hidden-    | ProtectedVisibility -- ^The GV is protected-    deriving (Show, Eq, Ord, Enum)--fromVisibility :: Visibility -> CUInt-fromVisibility c =-    case c of-        DefaultVisibility   -> (#const LLVMDefaultVisibility)-        HiddenVisibility    -> (#const LLVMHiddenVisibility)-        ProtectedVisibility -> (#const LLVMProtectedVisibility)--toVisibility :: CUInt -> Visibility-toVisibility c =-    case c of-        (#const LLVMDefaultVisibility)   -> DefaultVisibility-        (#const LLVMHiddenVisibility)    -> HiddenVisibility-        (#const LLVMProtectedVisibility) -> ProtectedVisibility-        _ -> error "toVisibility: bad value"---- ** Initialization-foreign import ccall unsafe "LLVMInitializeCore" initializeCore-    :: PassRegistryRef -> IO ()---- ** Error Handling-foreign import ccall unsafe "LLVMDisposeMessage" disposeMessage-    :: CString -> IO ()---- ** Contexts-foreign import ccall unsafe "LLVMContextCreate" contextCreate-    :: IO ContextRef-foreign import ccall unsafe "LLVMGetGlobalContext" getGlobalContext-    :: IO ContextRef-foreign import ccall unsafe "LLVMContextDispose" contextDispose-    :: ContextRef -> IO ()-foreign import ccall unsafe "LLVMGetMDKindIDInContext" getMDKindIDInContext-    :: ContextRef -> CString -> CUInt -> IO CUInt-foreign import ccall unsafe "LLVMGetMDKindID" getMDKindID-    :: CString -> CUInt -> IO CUInt---- ** Attributes--newtype AttributeKind = AttributeKind CUInt--foreign import ccall unsafe "LLVMGetEnumAttributeKindForName" getEnumAttributeKindForName-    :: CString -> C.CSize -> IO AttributeKind--foreign import ccall unsafe "LLVMGetLastEnumAttributeKind" getLastEnumAttributeKind-    :: IO AttributeKind--foreign import ccall unsafe "LLVMCreateEnumAttribute" createEnumAttribute-    :: ContextRef -> AttributeKind -> Word64 -> IO AttributeRef--foreign import ccall unsafe "LLVMGetEnumAttributeKind" getEnumAttributeKind-    :: AttributeRef -> IO AttributeKind--foreign import ccall unsafe "LLVMGetEnumAttributeValue" getEnumAttributeValue-    :: AttributeRef -> IO Word64--foreign import ccall unsafe "LLVMCreateStringAttribute" createStringAttribute-    :: ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef--foreign import ccall unsafe "LLVMGetStringAttributeKind" getStringAttributeKind-    :: AttributeRef -> Ptr CUInt -> IO CString--foreign import ccall unsafe "LLVMGetStringAttributeValue" getStringAttributeValue-    :: AttributeRef -> Ptr CUInt -> IO CString--foreign import ccall unsafe "LLVMIsEnumAttribute" isEnumAttribute-    :: AttributeRef -> IO LLVM.Bool--foreign import ccall unsafe "LLVMIsStringAttribute" isStringAttribute-    :: AttributeRef -> IO LLVM.Bool---- ** Modules-foreign import ccall unsafe "LLVMModuleCreateWithName" moduleCreateWithName-    :: CString -> IO ModuleRef-foreign import ccall unsafe "LLVMModuleCreateWithNameInContext"-        moduleCreateWithNameInContext-    :: CString -> ContextRef -> IO ModuleRef-foreign import ccall unsafe "LLVMDisposeModule" disposeModule-    :: ModuleRef -> IO ()-foreign import ccall unsafe "&LLVMDisposeModule" ptrDisposeModule-    :: FunPtr (ModuleRef -> IO ())---- ** Data Layout-foreign import ccall unsafe "LLVMGetDataLayout" getDataLayout-    :: ModuleRef -> IO CString-foreign import ccall unsafe "LLVMSetDataLayout" setDataLayout-    :: ModuleRef -> CString -> IO ()---- ** Targets-foreign import ccall unsafe "LLVMGetTarget" getTarget-    :: ModuleRef -> IO CString-foreign import ccall unsafe "LLVMSetTarget" setTarget-    :: ModuleRef -> CString -> IO ()---- ** Dump module-foreign import ccall unsafe "LLVMDumpModule" dumpModule-    :: ModuleRef -> IO ()-foreign import ccall unsafe "LLVMSetModuleInlineAsm" setModuleInlineAsm-    :: ModuleRef -> CString -> IO ()-foreign import ccall unsafe "LLVMGetModuleContext" getModuleContext-    :: ModuleRef -> IO ContextRef---- ** Functions-foreign import ccall unsafe "LLVMAddFunction" addFunction-    :: ModuleRef                -- ^ module-    -> CString                  -- ^ name-    -> TypeRef                  -- ^ type-    -> IO ValueRef-foreign import ccall unsafe "LLVMGetNamedFunction" getNamedFunction-    :: ModuleRef                -- ^ module-    -> CString                  -- ^ name-    -> IO ValueRef              -- ^ function (@nullPtr@ if not found)-foreign import ccall unsafe "LLVMGetFirstFunction" getFirstFunction-    :: ModuleRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetLastFunction" getLastFunction-    :: ModuleRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetNextFunction" getNextFunction-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetPreviousFunction" getPreviousFunction-    :: ValueRef -> IO ValueRef----- ** Types-foreign import ccall unsafe "LLVMGetTypeKind" getTypeKindCUInt-    :: TypeRef -> IO CUInt-foreign import ccall unsafe "LLVMTypeIsSized" typeIsSized-    :: TypeRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMGetTypeContext" getTypeContext-    :: TypeRef -> IO ContextRef---- ** Integer types-foreign import ccall unsafe "LLVMInt1TypeInContext" int1TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMInt8TypeInContext" int8TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMInt16TypeInContext" int16TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMInt32TypeInContext" int32TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMInt64TypeInContext" int64TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMIntTypeInContext" intTypeInContext-    :: ContextRef -> CUInt -> IO TypeRef--foreign import ccall unsafe "LLVMInt1Type" int1Type :: IO TypeRef-foreign import ccall unsafe "LLVMInt8Type" int8Type :: IO TypeRef-foreign import ccall unsafe "LLVMInt16Type" int16Type :: IO TypeRef-foreign import ccall unsafe "LLVMInt32Type" int32Type :: IO TypeRef-foreign import ccall unsafe "LLVMInt64Type" int64Type :: IO TypeRef-foreign import ccall unsafe "LLVMIntType" integerType :: CUInt -> IO TypeRef-foreign import ccall unsafe "LLVMGetIntTypeWidth" getIntTypeWidth-    :: TypeRef -> IO CUInt---- ** Real types-foreign import ccall unsafe "LLVMFloatTypeInContext" floatTypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMDoubleTypeInContext" doubleTypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMX86FP80TypeInContext" x86FP80TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMFP128TypeInContext" fp128TypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMPPCFP128TypeInContext" ppcFP128TypeInContext-    :: ContextRef -> IO TypeRef--foreign import ccall unsafe "LLVMFloatType" floatType :: IO TypeRef-foreign import ccall unsafe "LLVMDoubleType" doubleType :: IO TypeRef-foreign import ccall unsafe "LLVMX86FP80Type" x86FP80Type :: IO TypeRef-foreign import ccall unsafe "LLVMFP128Type" fp128Type :: IO TypeRef-foreign import ccall unsafe "LLVMPPCFP128Type" ppcFP128Type :: IO TypeRef---- ** Function types--- | Create a function type.-foreign import ccall unsafe "LLVMFunctionType" functionType-        :: TypeRef              -- ^ return type-        -> Ptr TypeRef          -- ^ array of argument types-        -> CUInt                -- ^ number of elements in array-        -> LLVM.Bool                 -- ^ non-zero if function is varargs-        -> IO TypeRef---- | Indicate whether a function takes varargs.-foreign import ccall unsafe "LLVMIsFunctionVarArg" isFunctionVarArg-        :: TypeRef -> IO LLVM.Bool---- | Give a function's return type.-foreign import ccall unsafe "LLVMGetReturnType" getReturnType-        :: TypeRef -> IO TypeRef---- | Give the number of fixed parameters that a function takes.-foreign import ccall unsafe "LLVMCountParamTypes" countParamTypes-        :: TypeRef -> IO CUInt---- | Fill out an array with the types of a function's fixed--- parameters.-foreign import ccall unsafe "LLVMGetParamTypes" getParamTypes-        :: TypeRef -> Ptr TypeRef -> IO ()---- ** Struct Type-foreign import ccall unsafe "LLVMStructTypeInContext" structTypeInContext-    :: ContextRef -> Ptr TypeRef -> CUInt -> LLVM.Bool -> IO TypeRef-foreign import ccall unsafe "LLVMStructType" structType-    :: Ptr TypeRef -> CUInt -> LLVM.Bool -> IO TypeRef-foreign import ccall unsafe "LLVMStructCreateNamed" structCreateNamed-    :: ContextRef -> CString -> IO TypeRef-foreign import ccall unsafe "LLVMGetStructName" getStructName-    :: TypeRef -> IO CString-foreign import ccall unsafe "LLVMStructSetBody" structSetBody-    :: TypeRef -> Ptr TypeRef -> CUInt -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMCountStructElementTypes"-    countStructElementTypes :: TypeRef -> IO CUInt-foreign import ccall unsafe "LLVMGetStructElementTypes" getStructElementTypes-    :: TypeRef -> Ptr TypeRef -> IO ()-foreign import ccall unsafe "LLVMIsPackedStruct" isPackedStruct-    :: TypeRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMIsOpaqueStruct" isOpaqueStruct-    :: TypeRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMGetTypeByName" getTypeByName-    :: ModuleRef -> CString -> IO TypeRef---- ** Array, Pointer, and Vector types-foreign import ccall unsafe "LLVMArrayType" arrayType-    :: TypeRef                  -- ^ element type-    -> CUInt                    -- ^ element count-    -> IO TypeRef-foreign import ccall unsafe "LLVMPointerType" pointerType-    :: TypeRef                  -- ^ pointed-to type-    -> CUInt                    -- ^ address space-    -> IO TypeRef-foreign import ccall unsafe "LLVMVectorType" vectorType-    :: TypeRef                  -- ^ element type-    -> CUInt                    -- ^ element count-    -> IO TypeRef----- | Get the type of a sequential type's elements.-foreign import ccall unsafe "LLVMGetElementType" getElementType-    :: TypeRef -> IO TypeRef-foreign import ccall unsafe "LLVMGetArrayLength" getArrayLength-    :: TypeRef -> IO CUInt-foreign import ccall unsafe "LLVMGetPointerAddressSpace" getPointerAddressSpace-    :: TypeRef -> IO CUInt-foreign import ccall unsafe "LLVMGetVectorSize" getVectorSize-    :: TypeRef -> IO CUInt----- ** Other Types--foreign import ccall unsafe "LLVMVoidTypeInContext" voidTypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMLabelTypeInContext" labelTypeInContext-    :: ContextRef -> IO TypeRef-foreign import ccall unsafe "LLVMX86MMXTypeInContext" x86MMXTypeInContext-    :: ContextRef -> IO TypeRef--foreign import ccall unsafe "LLVMVoidType" voidType :: IO TypeRef-foreign import ccall unsafe "LLVMLabelType" labelType :: IO TypeRef-foreign import ccall unsafe "LLVMX86MMXType" x86MMXType :: IO TypeRef---- ** Values-foreign import ccall unsafe "LLVMTypeOf" typeOf-    :: ValueRef -> IO TypeRef-foreign import ccall unsafe "LLVMGetValueName" getValueName-    :: ValueRef -> IO CString-foreign import ccall unsafe "LLVMSetValueName" setValueName-    :: ValueRef -> CString -> IO ()-foreign import ccall unsafe "LLVMDumpValue" dumpValue-    :: ValueRef -> IO ()-foreign import ccall unsafe "LLVMReplaceAllUsesWith" replaceAllUsesWith-    :: ValueRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMHasMetadata" hasMetadata-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMGetMetadata" getMetadata-    :: ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMSetMetadata" setMetadata-    :: ValueRef -> CUInt -> ValueRef -> IO ()---- ** Uses-foreign import ccall unsafe "LLVMGetFirstUse" getFirstUse-    :: ValueRef -> IO UseRef-foreign import ccall unsafe "LLVMGetNextUse" getNextUse-    :: UseRef -> IO UseRef-foreign import ccall unsafe "LLVMGetUser" getUser-    :: UseRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetUsedValue" getUsedValue-    :: UseRef -> IO ValueRef---- ** Users-foreign import ccall unsafe "LLVMGetOperand" getOperand-    :: ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMSetOperand" setOperand-    :: ValueRef -> CUInt -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMGetNumOperands" getNumOperands-    :: ValueRef -> IO CUInt---- ** Constants-foreign import ccall unsafe "LLVMConstNull" constNull-    :: TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstAllOnes" constAllOnes-    :: TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetUndef" getUndef-    :: TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMIsConstant" isConstant-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMIsUndef" isUndef-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMIsNull" isNull-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMConstPointerNull" constPointerNull-    :: TypeRef -> IO ValueRef---- ** Metadata-foreign import ccall unsafe "LLVMMDStringInContext" mDStringInContext-    :: ContextRef -> CString -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMMDString" mDString-    :: CString -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMMDNodeInContext" mDNodeInContext-    :: ContextRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMMDNode" mDNode-    :: Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMGetMDString" getMDString-    :: ValueRef -> Ptr CUInt -> IO CString-{--foreign import ccall unsafe "LLVMGetMDNodeNumOperands" getMDNodeNumOperands-    :: ValueRef -> IO CInt-foreign import ccall unsafe "LLVMGetMDNodeOperand" getMDNodeOperand-    :: ValueRef -> CUInt -> IO (Ptr ValueRef)--}-foreign import ccall unsafe "LLVMGetNamedMetadataNumOperands" getNamedMetadataNumOperands-    :: ModuleRef -> CString -> IO CUInt-foreign import ccall unsafe "LLVMGetNamedMetadataOperands" getNamedMetadataOperands-    :: ModuleRef -> CString -> Ptr ValueRef -> IO ()---- ** Scalar Constants-foreign import ccall unsafe "LLVMConstInt" constInt-    :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntOfArbitraryPrecision" constIntOfArbitraryPrecision-    :: TypeRef -> CUInt -> Ptr CULLong -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntOfString" constIntOfString-    :: TypeRef -> CString -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntOfStringAndSize" constIntOfStringAndSize-    :: TypeRef -> CString -> CUInt -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstReal" constReal-    :: TypeRef -> CDouble -> IO ValueRef-foreign import ccall unsafe "LLVMConstRealOfString" constRealOfString-    :: TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMConstRealOfStringAndSize" constRealOfStringAndSize-    :: TypeRef -> CString -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntGetZExtValue" constIntGetZExtValue-    :: ValueRef -> IO CULLong-foreign import ccall unsafe "LLVMConstIntGetSExtValue" constIntGetSExtValue-    :: ValueRef -> IO CLLong---- ** Composite Constants-foreign import ccall unsafe "LLVMConstStringInContext" constStringInContext-    :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMConstStructInContext" constStructInContext-    :: ContextRef -> Ptr ValueRef -> CUInt -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMConstString" constString-    :: CString -> CUInt -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMConstArray" constArray-    :: TypeRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstStruct" constStruct-    :: Ptr ValueRef -> CUInt -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMConstNamedStruct" constNamedStruct-    :: TypeRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstVector" constVector-    :: Ptr ValueRef -> CUInt -> IO ValueRef---- ** Constant expressions-foreign import ccall unsafe "LLVMGetConstOpcode" getConstOpcode-    :: ValueRef -> IO CUInt {-Opcode-}-foreign import ccall unsafe "LLVMAlignOf" alignOf-    :: TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMSizeOf" sizeOf-    :: TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNeg" constNeg-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNSWNeg" constNSWNeg-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNUWNeg" constNUWNeg-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFNeg" constFNeg-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNot" constNot-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstAdd" constAdd-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNSWAdd" constNSWAdd-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNUWAdd" constNUWAdd-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFAdd" constFAdd-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSub" constSub-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNSWSub" constNSWSub-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNUWSub" constNUWSub-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFSub" constFSub-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstMul" constMul-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNSWMul" constNSWMul-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstNUWMul" constNUWMul-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFMul" constFMul-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstUDiv" constUDiv-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSDiv" constSDiv-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstExactSDiv" constExactSDiv-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFDiv" constFDiv-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstURem" constURem-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSRem" constSRem-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFRem" constFRem-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstAnd" constAnd-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstOr" constOr-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstXor" constXor-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstICmp" constICmp-    :: CInt -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFCmp" constFCmp-    :: CInt -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstShl" constShl-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstLShr" constLShr-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstAShr" constAShr-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstGEP" constGEP-    :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP-    :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstTrunc" constTrunc-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSExt" constSExt-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstZExt" constZExt-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFPTrunc" constFPTrunc-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFPExt" constFPExt-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstUIToFP" constUIToFP-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSIToFP" constSIToFP-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFPToUI" constFPToUI-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstFPToSI" constFPToSI-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstPtrToInt" constPtrToInt-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntToPtr" constIntToPtr-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstBitCast" constBitCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSExtOrBitCast" constSExtOrBitCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstZExtOrBitCast" constZExtOrBitCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstTruncOrBitCast" constTruncOrBitCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstPointerCast" constPointerCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstIntCast" constIntCast-    :: ValueRef -> TypeRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstFPCast" constFPCast-    :: ValueRef -> TypeRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstSelect" constSelect-    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstExtractElement" constExtractElement-    :: ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstInsertElement" constInsertElement-    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstShuffleVector" constShuffleVector-    :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMConstExtractValue" constExtractValue-    :: ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstInsertValue" constInsertValue-    :: ValueRef -> ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMConstInlineAsm" constInlineAsm-    :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef-foreign import ccall unsafe "LLVMBlockAddress" blockAddress-    :: ValueRef -> BasicBlockRef -> IO ValueRef---- ** Operations on globals-foreign import ccall unsafe "LLVMGetGlobalParent" getGlobalParent-    :: ValueRef -> IO ModuleRef-foreign import ccall unsafe "LLVMIsDeclaration" isDeclaration-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMGetLinkage" getLinkage-    :: ValueRef -> IO CUInt-foreign import ccall unsafe "LLVMSetLinkage" setLinkage-    :: ValueRef -> CUInt -> IO ()-foreign import ccall unsafe "LLVMGetSection" getSection-    :: ValueRef -> IO CString-foreign import ccall unsafe "LLVMSetSection" setSection-    :: ValueRef -> CString -> IO ()-foreign import ccall unsafe "LLVMGetVisibility" getVisibility-    :: ValueRef -> IO CUInt-foreign import ccall unsafe "LLVMSetVisibility" setVisibility-    :: ValueRef -> CUInt -> IO ()-foreign import ccall unsafe "LLVMGetAlignment" getAlignment-    :: ValueRef -> IO CUInt-foreign import ccall unsafe "LLVMSetAlignment" setAlignment-    :: ValueRef -> CUInt -> IO ()---- ** Global Variables-foreign import ccall unsafe "LLVMAddGlobal" addGlobal-    :: ModuleRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMAddGlobalInAddressSpace" addGlobalInAddressSpace-    :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMGetNamedGlobal" getNamedGlobal-    :: ModuleRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMGetFirstGlobal" getFirstGlobal-    :: ModuleRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetLastGlobal" getLastGlobal-    :: ModuleRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetNextGlobal" getNextGlobal-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetPreviousGlobal" getPreviousGlobal-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMDeleteGlobal" deleteGlobal-    :: ValueRef -> IO ()-foreign import ccall unsafe "LLVMSetInitializer" setInitializer-    :: ValueRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMGetInitializer" getInitializer-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMIsThreadLocal" isThreadLocal-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMSetThreadLocal" setThreadLocal-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMIsGlobalConstant" isGlobalConstant-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMSetGlobalConstant" setGlobalConstant-    :: ValueRef -> LLVM.Bool -> IO ()---- ** Aliases-foreign import ccall unsafe "LLVMAddAlias" addAlias-    :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef--foreign import ccall unsafe "LLVMDeleteFunction" deleteFunction-    :: ValueRef                 -- ^ function-    -> IO ()-foreign import ccall unsafe "LLVMGetIntrinsicID" getIntrinsicID-    :: ValueRef                 -- ^ function-    -> IO CUInt-foreign import ccall unsafe "LLVMGetFunctionCallConv" getFunctionCallConv-    :: ValueRef                 -- ^ function-    -> IO CUInt-foreign import ccall unsafe "LLVMSetFunctionCallConv" setFunctionCallConv-    :: ValueRef                 -- ^ function-    -> CUInt-    -> IO ()-foreign import ccall unsafe "LLVMGetGC" getGC-    :: ValueRef -> IO CString-foreign import ccall unsafe "LLVMSetGC" setGC-    :: ValueRef -> CString -> IO ()---- ** Attribute attachment--foreign import ccall unsafe "LLVMAddAttributeAtIndex" addAttributeAtIndex-    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()--foreign import ccall unsafe "LLVMGetAttributeCountAtIndex" getAttributeCountAtIndex-    :: ValueRef -> AttributeIndex -> IO CUInt--foreign import ccall unsafe "LLVMGetAttributesAtIndex" getAttributesAtIndex-    :: ValueRef -> AttributeIndex -> Ptr AttributeRef -> IO ()--foreign import ccall unsafe "LLVMGetEnumAttributeAtIndex" getEnumAttributeAtIndex-    :: ValueRef -> AttributeIndex -> AttributeKind -> IO AttributeRef--foreign import ccall unsafe "LLVMGetStringAttributeAtIndex" getStringAttributeAtIndex-    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef--foreign import ccall unsafe "LLVMRemoveEnumAttributeAtIndex" removeEnumAttributeAtIndex-    :: ValueRef -> AttributeIndex -> AttributeKind -> IO ()--foreign import ccall unsafe "LLVMRemoveStringAttributeAtIndex" removeStringAttributeAtIndex-    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()--foreign import ccall unsafe "LLVMAddTargetDependentFunctionAttr" addTargetDependentFunctionAttr-    :: ValueRef -> CString -> CString -> IO ()---- ** Parameters-foreign import ccall unsafe "LLVMCountParams" countParams-    :: ValueRef                 -- ^ function-    -> IO CUInt-foreign import ccall unsafe "LLVMGetParams" getParams-    :: ValueRef                 -- ^ function-    -> Ptr ValueRef             -- ^ array to fill out-    -> IO ()-foreign import ccall unsafe "LLVMGetParam" getParam-    :: ValueRef                 -- ^ function-    -> CUInt                    -- ^ offset into array-    -> IO ValueRef-foreign import ccall unsafe "LLVMGetParamParent" getParamParent-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetFirstParam" getFirstParam-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetLastParam" getLastParam-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetNextParam" getNextParam-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetPreviousParam" getPreviousParam-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMSetParamAlignment" setParamAlignment-    :: ValueRef -> CUInt -> IO ()---- ** Basic Blocks-foreign import ccall unsafe "LLVMBasicBlockAsValue" basicBlockAsValue-    :: BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMValueIsBasicBlock" valueIsBasicBlock-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMValueAsBasicBlock" valueAsBasicBlock-    :: ValueRef                 -- ^ basic block-    -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetBasicBlockName" getBasicBlockName-    :: BasicBlockRef -> IO CString-foreign import ccall unsafe "LLVMGetBasicBlockParent" getBasicBlockParent-    :: BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetBasicBlockTerminator" getBasicBlockTerminator-    :: BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMCountBasicBlocks" countBasicBlocks-    :: ValueRef                 -- ^ function-    -> IO CUInt-foreign import ccall unsafe "LLVMGetBasicBlocks" getBasicBlocks-    :: ValueRef                 -- ^ function-    -> Ptr BasicBlockRef        -- ^ array to fill out-    -> IO ()-foreign import ccall unsafe "LLVMGetFirstBasicBlock" getFirstBasicBlock-    :: ValueRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetLastBasicBlock" getLastBasicBlock-    :: ValueRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetNextBasicBlock" getNextBasicBlock-    :: BasicBlockRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetPreviousBasicBlock" getPreviousBasicBlock-    :: BasicBlockRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetEntryBasicBlock" getEntryBasicBlock-    :: ValueRef                 -- ^ function-    -> IO BasicBlockRef-foreign import ccall unsafe "LLVMAppendBasicBlockInContext" appendBasicBlockInContext-    :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef-foreign import ccall unsafe "LLVMInsertBasicBlockInContext" insertBasicBlockInContext-    :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef-foreign import ccall unsafe "LLVMAppendBasicBlock" appendBasicBlock-    :: ValueRef                 -- ^ function-    -> CString                  -- ^ name for label-    -> IO BasicBlockRef-foreign import ccall unsafe "LLVMInsertBasicBlock" insertBasicBlock-    :: BasicBlockRef            -- ^ insert before this one-    -> CString                  -- ^ name for label-    -> IO BasicBlockRef-foreign import ccall unsafe "LLVMDeleteBasicBlock" deleteBasicBlock-    :: BasicBlockRef -> IO ()-foreign import ccall unsafe "LLVMRemoveBasicBlockFromParent" removeBasicBlockFromParent-    :: BasicBlockRef -> IO ()-foreign import ccall unsafe "LLVMMoveBasicBlockBefore" moveBasicBlockBefore-    :: BasicBlockRef -> BasicBlockRef -> IO ()-foreign import ccall unsafe "LLVMMoveBasicBlockAfter" moveBasicBlockAfter-    :: BasicBlockRef -> BasicBlockRef -> IO ()-foreign import ccall unsafe "LLVMGetFirstInstruction" getFirstInstruction-    :: BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetLastInstruction" getLastInstruction-    :: BasicBlockRef -> IO ValueRef---- ** Instructions-foreign import ccall unsafe "LLVMGetInstructionParent" getInstructionParent-    :: ValueRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMGetNextInstruction" getNextInstruction-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMGetPreviousInstruction" getPreviousInstruction-    :: ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMInstructionEraseFromParent" instructionEraseFromParent-    :: ValueRef -> IO ()-foreign import ccall unsafe "LLVMGetInstructionOpcode" getInstructionOpcode-    :: ValueRef -> IO Int-foreign import ccall unsafe "LLVMGetICmpPredicate" getICmpPredicate-    :: ValueRef -> IO Int---- ** Call sites-foreign import ccall unsafe "LLVMSetInstructionCallConv" setInstructionCallConv-    :: ValueRef -> CUInt -> IO ()-foreign import ccall unsafe "LLVMGetInstructionCallConv" getInstructionCallConv-    :: ValueRef -> IO CUInt-foreign import ccall unsafe "LLVMSetInstrParamAlignment" setInstrParamAlignment-    :: ValueRef -> CUInt -> CUInt -> IO ()--foreign import ccall unsafe "LLVMAddCallSiteAttribute" addCallSiteAttribute-    :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()--foreign import ccall unsafe "LLVMGetCallSiteAttributeCount" getCallSiteAttributeCount-    :: ValueRef -> AttributeIndex -> IO CUInt--foreign import ccall unsafe "LLVMGetCallSiteAttributes" getCallSiteAttributes-    :: ValueRef -> AttributeIndex -> Ptr AttributeRef -> IO ()--foreign import ccall unsafe "LLVMGetCallSiteEnumAttribute" getCallSiteEnumAttribute-    :: ValueRef -> AttributeIndex -> AttributeKind -> IO AttributeRef--foreign import ccall unsafe "LLVMGetCallSiteStringAttribute" getCallSiteStringAttribute-    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef--foreign import ccall unsafe "LLVMRemoveCallSiteEnumAttribute" removeCallSiteEnumAttribute-    :: ValueRef -> AttributeIndex -> AttributeKind -> IO ()--foreign import ccall unsafe "LLVMRemoveCallSiteStringAttribute" removeCallSiteStringAttribute-    :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()--foreign import ccall unsafe "LLVMGetCalledValue" getCalledValue-    :: ValueRef -> IO ValueRef---- ** Call instructions-foreign import ccall unsafe "LLVMIsTailCall" isTailCall-    :: ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMSetTailCall" setTailCall-    :: ValueRef -> LLVM.Bool -> IO ()---- ** Switch Instructions-foreign import ccall unsafe "LLVMGetSwitchDefaultDest" getSwitchDefaultDest-    :: ValueRef -> IO BasicBlockRef---- ** Phi Nodes-foreign import ccall unsafe "LLVMAddIncoming" addIncoming-    :: ValueRef -> Ptr ValueRef -> Ptr BasicBlockRef -> CUInt -> IO ()-foreign import ccall unsafe "LLVMCountIncoming" countIncoming-    :: ValueRef -> IO CUInt-foreign import ccall unsafe "LLVMGetIncomingValue" getIncomingValue-    :: ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMGetIncomingBlock" getIncomingBlock-    :: ValueRef -> CUInt -> IO BasicBlockRef---- ** Builders-foreign import ccall unsafe "LLVMCreateBuilderInContext" createBuilderInContext-    :: ContextRef -> IO BuilderRef-foreign import ccall unsafe "LLVMCreateBuilder" createBuilder-    :: IO BuilderRef-foreign import ccall unsafe "LLVMPositionBuilder" positionBuilder-    :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMPositionBuilderBefore" positionBefore-    :: BuilderRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMPositionBuilderAtEnd" positionAtEnd-    :: BuilderRef -> BasicBlockRef -> IO ()-foreign import ccall unsafe "LLVMGetInsertBlock" getInsertBlock-    :: BuilderRef -> IO BasicBlockRef-foreign import ccall unsafe "LLVMClearInsertionPosition" clearInsertionPosition-    :: BuilderRef -> IO ()-foreign import ccall unsafe "LLVMInsertIntoBuilder" insertIntoBuilder-    :: BuilderRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMInsertIntoBuilderWithName" insertIntoBuilderWithName-    :: BuilderRef -> ValueRef -> CString -> IO ()-foreign import ccall unsafe "&LLVMDisposeBuilder" ptrDisposeBuilder-    :: FunPtr (BuilderRef -> IO ())---- ** Metadata-foreign import ccall unsafe "LLVMGetCurrentDebugLocation" getCurrentDebugLocation-    :: BuilderRef -> IO ValueRef-foreign import ccall unsafe "LLVMSetCurrentDebugLocation" setCurrentDebugLocation-    :: BuilderRef -> ValueRef -> IO ()-foreign import ccall unsafe "LLVMSetInstDebugLocation" setInstDebugLocation-    :: BuilderRef -> ValueRef -> IO ()---- ** Terminators-foreign import ccall unsafe "LLVMBuildRetVoid" buildRetVoid-    :: BuilderRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildRet" buildRet-    :: BuilderRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildAggregateRet" buildAggregateRet-    :: BuilderRef -> Ptr ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMBuildBr" buildBr-    :: BuilderRef -> BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildCondBr" buildCondBr-    :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSwitch" buildSwitch-    :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMBuildIndirectBr" buildIndirectBr-    :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef-foreign import ccall unsafe "LLVMBuildInvoke" buildInvoke-    :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt-    -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildLandingPad" buildLandingPad-    :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildResume" buildResume-    :: BuilderRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildUnreachable" buildUnreachable-    :: BuilderRef -> IO ValueRef---- ** Switch instructions-foreign import ccall unsafe "LLVMAddCase" addCase-    :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()---- ** IndirectBr instructions-foreign import ccall unsafe "LLVMAddDestination" addDestination-    :: ValueRef -> BasicBlockRef -> IO ()---- ** LandingPad instructions-foreign import ccall unsafe "LLVMAddClause" addClause-    :: ValueRef -> ValueRef -> IO ()---- ** Resume instructions-foreign import ccall unsafe "LLVMSetCleanup" setCleanup-    :: ValueRef -> LLVM.Bool -> IO ()---- ** Arithmetic-foreign import ccall unsafe "LLVMBuildAdd" buildAdd-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNSWAdd" buildNSWAdd-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNUWAdd" buildNUWAdd-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFAdd" buildFAdd-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSub" buildSub-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNSWSub" buildNSWSub-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNUWSub" buildNUWSub-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFSub" buildFSub-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildMul" buildMul-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNSWMul" buildNSWMul-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNUWMul" buildNUWMul-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFMul" buildFMul-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildUDiv" buildUDiv-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSDiv" buildSDiv-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildExactSDiv" buildExactSDiv-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFDiv" buildFDiv-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildURem" buildURem-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSRem" buildSRem-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFRem" buildFRem-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildShl" buildShl-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildLShr" buildLShr-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildAShr" buildAShr-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildAnd" buildAnd-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildOr" buildOr-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildXor" buildXor-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildBinOp" buildBinOp-    :: BuilderRef -> CUInt{-Opcode-} -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNeg" buildNeg-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNSWNeg" buildNSWNeg-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNUWNeg" buildNUWNeg-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFNeg" buildFNeg-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildNot" buildNot-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef---- ** Floating point attributes-foreign import ccall unsafe "LLVMSetHasUnsafeAlgebra" setFastMath-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasUnsafeAlgebra" setHasUnsafeAlgebra-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasNoNaNs" setHasNoNaNs-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasNoInfs" setHasNoInfs-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasNoSignedZeros" setHasNoSignedZeros-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasAllowReciprocal" setHasAllowReciprocal-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasAllowReassoc" setHasAllowReassoc-    :: ValueRef -> LLVM.Bool -> IO ()-foreign import ccall unsafe "LLVMSetHasApproxFunc" setHasApproxFunc-    :: ValueRef -> LLVM.Bool -> IO ()----- ** Memory-foreign import ccall unsafe "LLVMBuildMalloc" buildMalloc-    :: BuilderRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildArrayMalloc" buildArrayMalloc-    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildAlloca" buildAlloca-    :: BuilderRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildArrayAlloca" buildArrayAlloca-    :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFree" buildFree-    :: BuilderRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildLoad" buildLoad-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildStore" buildStore-    :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef-foreign import ccall unsafe "LLVMBuildGEP" buildGEP-    :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString-    -> IO ValueRef-foreign import ccall unsafe "LLVMBuildInBoundsGEP" buildInBoundsGEP-    :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildStructGEP" buildStructGEP-    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildGlobalString" buildGlobalString-    :: BuilderRef -> CString -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildGlobalStringPtr" buildGlobalStringPtr-    :: BuilderRef -> CString -> CString -> IO ValueRef---- Casts-foreign import ccall unsafe "LLVMBuildTrunc" buildTrunc-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildZExt" buildZExt-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSExt" buildSExt-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFPToUI" buildFPToUI-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFPToSI" buildFPToSI-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildUIToFP" buildUIToFP-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSIToFP" buildSIToFP-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFPTrunc" buildFPTrunc-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFPExt" buildFPExt-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildPtrToInt" buildPtrToInt-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildIntToPtr" buildIntToPtr-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildBitCast" buildBitCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildZExtOrBitCast" buildZExtOrBitCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSExtOrBitCast" buildSExtOrBitCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildTruncOrBitCast" buildTruncOrBitCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildCast" buildCast-    :: BuilderRef -> CUInt{-Opcode-} -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildPointerCast" buildPointerCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildIntCast" buildIntCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFPCast" buildFPCast-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef---- Comparisons-foreign import ccall unsafe "LLVMBuildICmp" buildICmp-    :: BuilderRef -> CInt -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildFCmp" buildFCmp-    :: BuilderRef -> CInt -> ValueRef -> ValueRef -> CString -> IO ValueRef---- Miscellaneous instructions-foreign import ccall unsafe "LLVMBuildPhi" buildPhi-    :: BuilderRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildCall" buildCall-    :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildSelect" buildSelect-    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildVAArg" buildVAArg-    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildExtractElement" buildExtractElement-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildInsertElement" buildInsertElement-    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildShuffleVector" buildShuffleVector-    :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildExtractValue" buildExtractValue-    :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildInsertValue" buildInsertValue-    :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildIsNull" buildIsNull-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildIsNotNull" buildIsNotNull-    :: BuilderRef -> ValueRef -> CString -> IO ValueRef-foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff-    :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef----- ** Memory Buffers-foreign import ccall unsafe "LLVMCreateMemoryBufferWithContentsOfFile" createMemoryBufferWithContentsOfFile-    :: CString -> Ptr MemoryBufferRef -> Ptr CString -> IO LLVM.Bool-foreign import ccall unsafe "LLVMCreateMemoryBufferWithSTDIN" createMemoryBufferWithSTDIN-    :: Ptr MemoryBufferRef -> Ptr CString -> IO LLVM.Bool-foreign import ccall unsafe "LLVMDisposeMemoryBuffer" disposeMemoryBuffer-    :: MemoryBufferRef -> IO ()---- ** Pass Registry-foreign import ccall unsafe "LLVMGetGlobalPassRegistry" getGlobalPassRegistry-    :: IO PassRegistryRef---- ** Pass Managers-foreign import ccall unsafe "LLVMCreatePassManager" createPassManager-    :: IO PassManagerRef-foreign import ccall unsafe "LLVMCreateFunctionPassManagerForModule" createFunctionPassManagerForModule-    :: ModuleRef -> IO PassManagerRef-foreign import ccall unsafe "LLVMRunPassManager" runPassManager-    :: PassManagerRef -> ModuleRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMInitializeFunctionPassManager" initializeFunctionPassManager-    :: PassManagerRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMRunFunctionPassManager" runFunctionPassManager-    :: PassManagerRef -> ValueRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMFinalizeFunctionPassManager" finalizeFunctionPassManager-    :: PassManagerRef -> IO LLVM.Bool-foreign import ccall unsafe "LLVMDisposePassManager" disposePassManager-    :: PassManagerRef -> IO ()-foreign import ccall unsafe "&LLVMDisposePassManager" ptrDisposePassManager-    :: FunPtr (PassManagerRef -> IO ())---- ** Functions from extras.cpp-foreign import ccall unsafe "LLVMValueGetNumUses" getNumUses-    :: ValueRef -> IO CInt-foreign import ccall unsafe "LLVMInstGetOpcode" instGetOpcode-    :: ValueRef -> IO CInt-foreign import ccall unsafe "LLVMCmpInstGetPredicate" cmpInstGetPredicate-    :: ValueRef -> IO CInt+-- Raw.Module:      LLVM.FFI.Core+-- Copyright:   Bryan O'Sullivan 2007, 2008+-- License:     BSD-style (see the file LICENSE)+--+-- Maintainer:  bos@serpentine.com+-- Stability:   experimental+-- Portability: requires GHC 6.8, LLVM+--+-- This module provides direct access to the LLVM C bindings.++module LLVM.FFI.Core+    (+      initializeCore+    , Version.version++    -- * Boolean values+    , LLVM.Bool(LLVM.Bool)+    , LLVM.false+    , LLVM.true+    , LLVM.consBool+    , LLVM.deconsBool++    -- * Error handling+    , disposeMessage++    -- * Raw.Context functions+    , Raw.Context+    , ContextRef+    , contextCreate+    , contextDispose+    , getGlobalContext++    , getMDKindID+    , getMDKindIDInContext++      -- * Modules+    , Raw.Module+    , ModuleRef+    , moduleCreateWithName+    , moduleCreateWithNameInContext+    , disposeModule+    , ptrDisposeModule++    , getDataLayout+    , setDataLayout++    , getTarget+    , setTarget++    , defaultTargetTriple+    , hostTriple++    , dumpModule++    , setModuleInlineAsm+    , getModuleContext++    -- * Types+    , Raw.Type+    , TypeRef+    , TypeKind(..)++    , getTypeKind+    , typeIsSized+    , getTypeContext++    -- ** Integer types+    , int1TypeInContext+    , int8TypeInContext+    , int16TypeInContext+    , int32TypeInContext+    , int64TypeInContext+    , intTypeInContext++    , int1Type+    , int8Type+    , int16Type+    , int32Type+    , int64Type+    , integerType+    , getIntTypeWidth++    -- ** Real types+    , floatTypeInContext+    , doubleTypeInContext+    , x86FP80TypeInContext+    , fp128TypeInContext+    , ppcFP128TypeInContext++    , floatType+    , doubleType+    , x86FP80Type+    , fp128Type+    , ppcFP128Type++    -- ** Function types+    , functionType+    , isFunctionVarArg+    , getReturnType+    , countParamTypes+    , getParamTypes++    -- ** Struct types+    , structTypeInContext+    , structType+    , structCreateNamed+    , getStructName+    , structSetBody++    , countStructElementTypes+    , getStructElementTypes+    , isPackedStruct+    , isOpaqueStruct++    , getTypeByName++    -- ** Array, pointer, and vector types+    , arrayType+    , pointerType+    , vectorType++    , getElementType+    , getArrayLength+    , getPointerAddressSpace+    , getVectorSize++    -- ** Other types+    , voidTypeInContext+    , labelTypeInContext+    , x86MMXTypeInContext++    , voidType+    , labelType+    , x86MMXType++    -- * Values+    , Raw.Value+    , ValueRef+    , typeOf+    , getValueName+    , setValueName+    , dumpValue+    , replaceAllUsesWith+    , hasMetadata+    , getMetadata+    , setMetadata++    -- ** Uses+    , Raw.OpaqueUse+    , UseRef+    , getFirstUse+    , getNextUse+    , getUser+    , getUsedValue++    -- ** Users+    , getOperand+    , setOperand+    , getNumOperands++    -- ** Constants+    , constNull+    , constAllOnes+    , getUndef+    , isConstant+    , isNull+    , isUndef+    , constPointerNull++    -- ** Metadata+    , mDStringInContext+    , mDString+    , mDNodeInContext+    , mDNode+    , getMDString+--    , getMDNodeNumOperands+--    , getMDNodeOperand+    , getNamedMetadataNumOperands+    , getNamedMetadataOperands++    -- ** Scalar constants+    , constInt+    , constIntOfArbitraryPrecision+    , constIntOfString+    , constIntOfStringAndSize+    , constReal+    , constRealOfString+    , constRealOfStringAndSize+    , constIntGetZExtValue+    , constIntGetSExtValue++    -- ** Composite constants+    , constStringInContext+    , constStructInContext+    , constString+    , constArray+    , constStruct+    , constNamedStruct+    , constVector++    -- ** Constant Expressions+    , getConstOpcode+    , alignOf+    , sizeOf+    , constNeg+    , constNUWNeg+    , constNSWNeg+    , constFNeg+    , constNot+    , constAdd+    , constNSWAdd+    , constNUWAdd+    , constFAdd+    , constSub+    , constNSWSub+    , constNUWSub+    , constFSub+    , constMul+    , constNSWMul+    , constNUWMul+    , constFMul+    , constUDiv+    , constSDiv+    , constExactSDiv+    , constFDiv+    , constURem+    , constSRem+    , constFRem+    , constAnd+    , constOr+    , constXor+    , constICmp+    , constFCmp+    , constShl+    , constLShr+    , constAShr+    , constGEP+    , constInBoundsGEP+    , constTrunc+    , constSExt+    , constZExt+    , constFPTrunc+    , constFPExt+    , constUIToFP+    , constSIToFP+    , constFPToUI+    , constFPToSI+    , constPtrToInt+    , constIntToPtr+    , constBitCast+    , constZExtOrBitCast+    , constSExtOrBitCast+    , constTruncOrBitCast+    , constPointerCast+    , constIntCast+    , constFPCast+    , constSelect+    , constExtractElement+    , constInsertElement+    , constShuffleVector+    , constExtractValue+    , constInsertValue+    , constInlineAsm+    , blockAddress++    -- ** Comparison predicates+    , IntPredicate(..)+    , fromIntPredicate+    , toIntPredicate+    , FPPredicate(..)+    , fromRealPredicate+    , toRealPredicate++    -- ** Floating point attributes+    , setFastMath+    , setHasUnsafeAlgebra+    , setHasNoNaNs+    , setHasNoInfs+    , setHasNoSignedZeros+    , setHasAllowReciprocal+    , setHasAllowReassoc+    , setHasApproxFunc++    -- ** Support operations and types+    , Linkage(..)+    , fromLinkage+    , toLinkage++    , Visibility(..)+    , fromVisibility+    , toVisibility++    -- ** Global variables, functions, and aliases (globals)+    , getGlobalParent+    , isDeclaration+    , getLinkage+    , setLinkage+    , getSection+    , setSection+    , getVisibility+    , setVisibility+    , getAlignment+    , setAlignment++    -- ** Global variables+    , addGlobal+    , addGlobalInAddressSpace+    , getNamedGlobal+    , getFirstGlobal+    , getLastGlobal+    , getNextGlobal+    , getPreviousGlobal+    , deleteGlobal+    , getInitializer+    , setInitializer+    , isThreadLocal+    , setThreadLocal+    , isGlobalConstant+    , setGlobalConstant++    -- ** Aliases+    , addAlias++    -- * Parameter passing+    , Raw.Attribute+    , AttributeRef+    , AttributeKind(..)++    -- ** Calling conventions+    , CallingConvention(..)+    , fromCallingConvention+    , toCallingConvention++    -- ** Functions+    , addFunction+    , getNamedFunction+    , getFirstFunction+    , getLastFunction+    , getNextFunction+    , getPreviousFunction+    , deleteFunction+    , getIntrinsicID+    , getFunctionCallConv+    , setFunctionCallConv+    , getGC+    , setGC+    , AttributeIndex(AttributeIndex)+    , Raw.attributeReturnIndex, Raw.attributeFunctionIndex+    , getEnumAttributeKindForName+    , getLastEnumAttributeKind+    , createEnumAttribute+    , getEnumAttributeKind+    , getEnumAttributeValue+    , createStringAttribute+    , getStringAttributeKind+    , getStringAttributeValue+    , isEnumAttribute+    , isStringAttribute+    , addAttributeAtIndex+    , getAttributeCountAtIndex+    , getAttributesAtIndex+    , getEnumAttributeAtIndex+    , getStringAttributeAtIndex+    , removeEnumAttributeAtIndex+    , removeStringAttributeAtIndex+    , addTargetDependentFunctionAttr+    , addCallSiteAttribute+    , getCallSiteAttributeCount+    , getCallSiteAttributes+    , getCallSiteEnumAttribute+    , getCallSiteStringAttribute+    , removeCallSiteEnumAttribute+    , removeCallSiteStringAttribute+    , getCalledValue++    -- ** Parameters+    , countParams+    , getParams+    , getParam+    , getParamParent+    , getFirstParam+    , getLastParam+    , getNextParam+    , getPreviousParam+    , setParamAlignment++    -- ** Basic blocks+    , Raw.BasicBlock+    , BasicBlockRef+    , basicBlockAsValue+    , valueIsBasicBlock+    , valueAsBasicBlock+    , getBasicBlockName+    , getBasicBlockParent+    , getBasicBlockTerminator+    , countBasicBlocks+    , getBasicBlocks+    , getFirstBasicBlock+    , getLastBasicBlock+    , getNextBasicBlock+    , getPreviousBasicBlock+    , getEntryBasicBlock+    , appendBasicBlockInContext+    , insertBasicBlockInContext+    , appendBasicBlock+    , insertBasicBlock+    , deleteBasicBlock+    , removeBasicBlockFromParent+    , moveBasicBlockBefore+    , moveBasicBlockAfter+    , getFirstInstruction+    , getLastInstruction++    -- ** Instructions+    , getInstructionParent+    , getNextInstruction+    , getPreviousInstruction+    , instructionEraseFromParent+    , getInstructionOpcode+    , getICmpPredicate++    -- ** Call Sites+    , getInstructionCallConv+    , setInstructionCallConv+    , setInstrParamAlignment++    -- ** Call Instructions (only)+    , isTailCall+    , setTailCall++    -- ** Switch Instructions (only)+    , getSwitchDefaultDest++    -- ** Phi nodes+    , addIncoming+    , countIncoming+    , getIncomingValue+    , getIncomingBlock++    -- * Instruction building+    , Raw.Builder+    , BuilderRef+    , createBuilderInContext+    , createBuilder+    , positionBuilder+    , positionBefore+    , positionAtEnd+    , getInsertBlock+    , clearInsertionPosition+    , insertIntoBuilder+    , insertIntoBuilderWithName+    , ptrDisposeBuilder++    -- ** Metadata+    , setCurrentDebugLocation+    , getCurrentDebugLocation+    , setInstDebugLocation++    -- ** Terminators+    , buildRetVoid+    , buildRet+    , buildAggregateRet+    , buildBr+    , buildCondBr+    , buildSwitch+    , buildIndirectBr+    , buildInvoke+    , buildLandingPad+    , buildResume+    , buildUnreachable++    , addCase+    , addDestination+    , addClause+    , setCleanup++    -- ** Arithmetic+    , buildAdd+    , buildNSWAdd+    , buildNUWAdd+    , buildFAdd+    , buildSub+    , buildNSWSub+    , buildNUWSub+    , buildFSub+    , buildMul+    , buildNSWMul+    , buildNUWMul+    , buildFMul+    , buildUDiv+    , buildSDiv+    , buildExactSDiv+    , buildFDiv+    , buildURem+    , buildSRem+    , buildFRem+    , buildShl+    , buildLShr+    , buildAShr+    , buildAnd+    , buildOr+    , buildXor+    , buildBinOp+    , buildNeg+    , buildNSWNeg+    , buildNUWNeg+    , buildFNeg+    , buildNot++    -- ** Memory+    , buildMalloc+    , buildArrayMalloc+    , buildAlloca+    , buildArrayAlloca+    , buildFree+    , buildLoad+    , buildStore+    , buildGEP+    , buildInBoundsGEP+    , buildStructGEP+    , buildGlobalString+    , buildGlobalStringPtr++    -- ** Casts+    , buildTrunc+    , buildZExt+    , buildSExt+    , buildFPToUI+    , buildFPToSI+    , buildUIToFP+    , buildSIToFP+    , buildFPTrunc+    , buildFPExt+    , buildPtrToInt+    , buildIntToPtr+    , buildBitCast+    , buildZExtOrBitCast+    , buildSExtOrBitCast+    , buildTruncOrBitCast+    , buildCast+    , buildPointerCast+    , buildIntCast+    , buildFPCast++    -- ** Comparisons+    , buildICmp+    , buildFCmp++    -- ** Miscellaneous instructions+    , buildPhi+    , buildCall+    , buildSelect+    , buildVAArg+    , buildExtractElement+    , buildInsertElement+    , buildShuffleVector+    , buildExtractValue+    , buildInsertValue+    , buildIsNull+    , buildIsNotNull+    , buildPtrDiff++    -- * Memory buffers+    , Raw.MemoryBuffer+    , MemoryBufferRef+    , createMemoryBufferWithContentsOfFile+    , createMemoryBufferWithSTDIN+    , disposeMemoryBuffer++    -- ** Raw.PassRegistry+    , Raw.PassRegistry+    , PassRegistryRef+    , getGlobalPassRegistry++    -- ** Pass manager+    , Raw.PassManager+    , PassManagerRef+    , ptrDisposePassManager++    , createPassManager+    , createFunctionPassManagerForModule+    , runPassManager+    , initializeFunctionPassManager+    , runFunctionPassManager+    , finalizeFunctionPassManager+    , disposePassManager++    -- ** Functions from extras.cpp+    , getNumUses+    , instGetOpcode+    , cmpInstGetIntPredicate+    , cmpInstGetRealPredicate++    ) where++import qualified LLVM.FFI.Version as Version+import qualified LLVM.FFI.Base as LLVM+import qualified LLVM.Raw.Core as Raw+import LLVM.Raw.Core (+         PassRegistryRef, ContextRef, AttributeRef, AttributeIndex,+         ModuleRef, TypeRef,+         BasicBlockRef, ValueRef, UseRef, BuilderRef,+         MemoryBufferRef, PassManagerRef, PassRegistryRef, ContextRef)++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr, FunPtr)++import Data.Typeable (Typeable)++import Data.Word (Word8, Word64)++import Prelude+         (IO, Eq, Ord, Bounded, Enum, Show, Read, String,+          ($), (++), (.), error,+           fmap, fromIntegral, show, toEnum, )+++type CDouble  = C.CDouble+type CInt     = C.CInt+type CUInt    = C.CUInt+type CLLong   = C.CLLong+type CULLong  = C.CULLong++type FunctionRef = ValueRef+++#include <llvm/Config/llvm-config.h>+#include <llvm-c/Core.h>+++defaultTargetTriple, hostTriple :: String+defaultTargetTriple = (#const_str LLVM_DEFAULT_TARGET_TRIPLE)+hostTriple          = (#const_str LLVM_HOST_TRIPLE)+++data TypeKind+    = VoidTypeKind+    | FloatTypeKind+    | DoubleTypeKind+    | X86_FP80TypeKind+    | FP128TypeKind+    | PPC_FP128TypeKind+    | LabelTypeKind+    | IntegerTypeKind+    | FunctionTypeKind+    | StructTypeKind+    | ArrayTypeKind+    | PointerTypeKind+    | OpaqueTypeKind+    | VectorTypeKind+    deriving (Eq, Ord, Enum, Bounded, Show, Read, Typeable)++getTypeKind :: TypeRef -> IO TypeKind+getTypeKind = fmap (toEnum . fromIntegral . Raw.unTypeKind) . getTypeKindRaw++data CallingConvention = C+                       | Fast+                       | Cold+                       | X86StdCall+                       | X86FastCall+                       | GHC+                         deriving (Show, Eq, Ord, Enum, Bounded, Typeable)++fromCallingConvention :: CallingConvention -> Raw.CallingConvention+fromCallingConvention c =+    Raw.CallingConvention $+    case c of+        C -> (#const LLVMCCallConv)+        Fast -> (#const LLVMFastCallConv)+        Cold -> (#const LLVMColdCallConv)+        X86StdCall -> (#const LLVMX86FastcallCallConv)+        X86FastCall -> (#const LLVMX86StdcallCallConv)+        GHC -> 10++toCallingConvention :: Raw.CallingConvention -> CallingConvention+toCallingConvention (Raw.CallingConvention c) =+    case c of+        (#const LLVMCCallConv) -> C+        (#const LLVMFastCallConv) -> Fast+        (#const LLVMColdCallConv) -> Cold+        (#const LLVMX86StdcallCallConv) -> X86StdCall+        (#const LLVMX86FastcallCallConv) -> X86FastCall+        10 -> GHC+        _ ->+            error $ "LLVM.Core.FFI.toCallingConvention: " +++                                "unsupported calling convention" ++ show c++-- |An enumeration for the kinds of linkage for global values.+data Linkage+    = ExternalLinkage     -- ^Externally visible function+    | AvailableExternallyLinkage+    | LinkOnceAnyLinkage  -- ^Keep one copy of function when linking (inline)+    | LinkOnceODRLinkage  -- ^Same, but only replaced by something equivalent.+    | LinkOnceODRAutoHideLinkage -- ^Like LinkOnceODR, but possibly hidden.+    | WeakAnyLinkage      -- ^Keep one copy of named function when linking (weak)+    | WeakODRLinkage      -- ^Same, but only replaced by something equivalent.+    | AppendingLinkage    -- ^Special purpose, only applies to global arrays+    | InternalLinkage     -- ^Rename collisions when linking (static functions)+    | PrivateLinkage      -- ^Like Internal, but omit from symbol table+    | DLLImportLinkage    -- ^Function to be imported from DLL+    | DLLExportLinkage    -- ^Function to be accessible from DLL+    | ExternalWeakLinkage -- ^ExternalWeak linkage description+    | GhostLinkage        -- ^Stand-in functions for streaming fns from BC files+    | CommonLinkage       -- ^Tentative definitions+    | LinkerPrivateLinkage -- ^Like Private, but linker removes.+    | LinkerPrivateWeakLinkage -- ^Like LinkerPrivate, but is weak.+    deriving (Show, Eq, Ord, Enum, Typeable)++fromLinkage :: Linkage -> Raw.Linkage+fromLinkage c =+    Raw.Linkage $+    case c of+        ExternalLinkage             -> (#const LLVMExternalLinkage)+        AvailableExternallyLinkage  -> (#const LLVMAvailableExternallyLinkage)+        LinkOnceAnyLinkage          -> (#const LLVMLinkOnceAnyLinkage)+        LinkOnceODRLinkage          -> (#const LLVMLinkOnceODRLinkage)+        LinkOnceODRAutoHideLinkage  -> (#const LLVMLinkOnceODRAutoHideLinkage)+        WeakAnyLinkage              -> (#const LLVMWeakAnyLinkage)+        WeakODRLinkage              -> (#const LLVMWeakODRLinkage)+        AppendingLinkage            -> (#const LLVMAppendingLinkage)+        InternalLinkage             -> (#const LLVMInternalLinkage)+        PrivateLinkage              -> (#const LLVMPrivateLinkage)+        DLLImportLinkage            -> (#const LLVMDLLImportLinkage)+        DLLExportLinkage            -> (#const LLVMDLLExportLinkage)+        ExternalWeakLinkage         -> (#const LLVMExternalWeakLinkage)+        GhostLinkage                -> (#const LLVMGhostLinkage)+        CommonLinkage               -> (#const LLVMCommonLinkage)+        LinkerPrivateLinkage        -> (#const LLVMLinkerPrivateLinkage)+        LinkerPrivateWeakLinkage    -> (#const LLVMLinkerPrivateWeakLinkage)++toLinkage :: Raw.Linkage -> Linkage+toLinkage (Raw.Linkage c) =+    case c of+        (#const LLVMExternalLinkage)             -> ExternalLinkage+        (#const LLVMAvailableExternallyLinkage)  -> AvailableExternallyLinkage+        (#const LLVMLinkOnceAnyLinkage)          -> LinkOnceAnyLinkage+        (#const LLVMLinkOnceODRLinkage)          -> LinkOnceODRLinkage+        (#const LLVMLinkOnceODRAutoHideLinkage)  -> LinkOnceODRAutoHideLinkage+        (#const LLVMWeakAnyLinkage)              -> WeakAnyLinkage+        (#const LLVMWeakODRLinkage)              -> WeakODRLinkage+        (#const LLVMAppendingLinkage)            -> AppendingLinkage+        (#const LLVMInternalLinkage)             -> InternalLinkage+        (#const LLVMPrivateLinkage)              -> PrivateLinkage+        (#const LLVMDLLImportLinkage)            -> DLLImportLinkage+        (#const LLVMDLLExportLinkage)            -> DLLExportLinkage+        (#const LLVMExternalWeakLinkage)         -> ExternalWeakLinkage+        (#const LLVMGhostLinkage)                -> GhostLinkage+        (#const LLVMCommonLinkage)               -> CommonLinkage+        (#const LLVMLinkerPrivateLinkage)        -> LinkerPrivateLinkage+        (#const LLVMLinkerPrivateWeakLinkage)    -> LinkerPrivateWeakLinkage+        _ -> error "toLinkage: bad value"++-- |An enumeration for the kinds of visibility of global values.+data Visibility+    = DefaultVisibility   -- ^The GV is visible+    | HiddenVisibility    -- ^The GV is hidden+    | ProtectedVisibility -- ^The GV is protected+    deriving (Show, Eq, Ord, Enum)++fromVisibility :: Visibility -> Raw.Visibility+fromVisibility c =+    Raw.Visibility $+    case c of+        DefaultVisibility   -> (#const LLVMDefaultVisibility)+        HiddenVisibility    -> (#const LLVMHiddenVisibility)+        ProtectedVisibility -> (#const LLVMProtectedVisibility)++toVisibility :: Raw.Visibility -> Visibility+toVisibility (Raw.Visibility c) =+    case c of+        (#const LLVMDefaultVisibility)   -> DefaultVisibility+        (#const LLVMHiddenVisibility)    -> HiddenVisibility+        (#const LLVMProtectedVisibility) -> ProtectedVisibility+        _ -> error "toVisibility: bad value"+++data IntPredicate =+      IntEQ   -- ^ equal+    | IntNE   -- ^ not equal+    | IntUGT  -- ^ unsigned greater than+    | IntUGE  -- ^ unsigned greater or equal+    | IntULT  -- ^ unsigned less than+    | IntULE  -- ^ unsigned less or equal+    | IntSGT  -- ^ signed greater than+    | IntSGE  -- ^ signed greater or equal+    | IntSLT  -- ^ signed less than+    | IntSLE  -- ^ signed less or equal+    deriving (Eq, Ord, Enum, Show, Typeable)++fromIntPredicate :: IntPredicate -> Raw.IntPredicate+fromIntPredicate p =+    Raw.IntPredicate $+    case p of+        IntEQ  -> (#const LLVMIntEQ )+        IntNE  -> (#const LLVMIntNE )+        IntUGT -> (#const LLVMIntUGT)+        IntUGE -> (#const LLVMIntUGE)+        IntULT -> (#const LLVMIntULT)+        IntULE -> (#const LLVMIntULE)+        IntSGT -> (#const LLVMIntSGT)+        IntSGE -> (#const LLVMIntSGE)+        IntSLT -> (#const LLVMIntSLT)+        IntSLE -> (#const LLVMIntSLE)++toIntPredicate :: Raw.IntPredicate -> IntPredicate+toIntPredicate (Raw.IntPredicate p) =+    case p of+        (#const LLVMIntEQ ) -> IntEQ+        (#const LLVMIntNE ) -> IntNE+        (#const LLVMIntUGT) -> IntUGT+        (#const LLVMIntUGE) -> IntUGE+        (#const LLVMIntULT) -> IntULT+        (#const LLVMIntULE) -> IntULE+        (#const LLVMIntSGT) -> IntSGT+        (#const LLVMIntSGE) -> IntSGE+        (#const LLVMIntSLT) -> IntSLT+        (#const LLVMIntSLE) -> IntSLE+        _ -> error "toIntPredicate: bad value"++data FPPredicate =+      FPFalse -- ^ Always false (always folded)+    | FPOEQ   -- ^ True if ordered and equal+    | FPOGT   -- ^ True if ordered and greater than+    | FPOGE   -- ^ True if ordered and greater than or equal+    | FPOLT   -- ^ True if ordered and less than+    | FPOLE   -- ^ True if ordered and less than or equal+    | FPONE   -- ^ True if ordered and operands are unequal+    | FPORD   -- ^ True if ordered (no nans)+    | FPUNO   -- ^ True if unordered: isnan(X) | isnan(Y)+    | FPUEQ   -- ^ True if unordered or equal+    | FPUGT   -- ^ True if unordered or greater than+    | FPUGE   -- ^ True if unordered, greater than, or equal+    | FPULT   -- ^ True if unordered or less than+    | FPULE   -- ^ True if unordered, less than, or equal+    | FPUNE   -- ^ True if unordered or not equal+    | FPTrue  -- ^ Always true (always folded)+    deriving (Eq, Ord, Enum, Show, Typeable)++fromRealPredicate :: FPPredicate -> Raw.RealPredicate+fromRealPredicate p =+    Raw.RealPredicate $+    case p of+        FPFalse -> (#const LLVMRealPredicateFalse)+        FPTrue  -> (#const LLVMRealPredicateTrue)+        FPOEQ -> (#const LLVMRealOEQ)+        FPOGT -> (#const LLVMRealOGT)+        FPOGE -> (#const LLVMRealOGE)+        FPOLT -> (#const LLVMRealOLT)+        FPOLE -> (#const LLVMRealOLE)+        FPONE -> (#const LLVMRealONE)+        FPORD -> (#const LLVMRealORD)+        FPUNO -> (#const LLVMRealUNO)+        FPUEQ -> (#const LLVMRealUEQ)+        FPUGT -> (#const LLVMRealUGT)+        FPUGE -> (#const LLVMRealUGE)+        FPULT -> (#const LLVMRealULT)+        FPULE -> (#const LLVMRealULE)+        FPUNE -> (#const LLVMRealUNE)++toRealPredicate :: Raw.RealPredicate -> FPPredicate+toRealPredicate (Raw.RealPredicate p) =+    case p of+        (#const LLVMRealPredicateFalse) -> FPFalse+        (#const LLVMRealPredicateTrue) -> FPTrue+        (#const LLVMRealOEQ) -> FPOEQ+        (#const LLVMRealOGT) -> FPOGT+        (#const LLVMRealOGE) -> FPOGE+        (#const LLVMRealOLT) -> FPOLT+        (#const LLVMRealOLE) -> FPOLE+        (#const LLVMRealONE) -> FPONE+        (#const LLVMRealORD) -> FPORD+        (#const LLVMRealUNO) -> FPUNO+        (#const LLVMRealUEQ) -> FPUEQ+        (#const LLVMRealUGT) -> FPUGT+        (#const LLVMRealUGE) -> FPUGE+        (#const LLVMRealULT) -> FPULT+        (#const LLVMRealULE) -> FPULE+        (#const LLVMRealUNE) -> FPUNE+        _ -> error "toRealPredicate: bad value"++++-- ** Initialization+initializeCore :: PassRegistryRef -> IO ()+initializeCore = Raw.initializeCore++-- ** Error Handling+disposeMessage :: CString -> IO ()+disposeMessage = Raw.disposeMessage++-- ** Contexts+contextCreate :: IO ContextRef+contextCreate = Raw.contextCreate++getGlobalContext :: IO ContextRef+getGlobalContext = Raw.getGlobalContext++contextDispose :: ContextRef -> IO ()+contextDispose = Raw.contextDispose++getMDKindIDInContext :: ContextRef -> CString -> CUInt -> IO CUInt+getMDKindIDInContext = Raw.getMDKindIDInContext++getMDKindID :: CString -> CUInt -> IO CUInt+getMDKindID = Raw.getMDKindID++-- ** Attributes++newtype AttributeKind = AttributeKind CUInt++getEnumAttributeKindForName :: CString -> C.CSize -> IO AttributeKind+getEnumAttributeKindForName name slen =+   fmap AttributeKind $ Raw.getEnumAttributeKindForName name slen++getLastEnumAttributeKind :: IO AttributeKind+getLastEnumAttributeKind = fmap AttributeKind $ Raw.getLastEnumAttributeKind++createEnumAttribute :: ContextRef -> AttributeKind -> Word64 -> IO AttributeRef+createEnumAttribute c (AttributeKind kindId) = Raw.createEnumAttribute c kindId++getEnumAttributeKind :: AttributeRef -> IO AttributeKind+getEnumAttributeKind = fmap AttributeKind . Raw.getEnumAttributeKind++getEnumAttributeValue :: AttributeRef -> IO Word64+getEnumAttributeValue = Raw.getEnumAttributeValue++createStringAttribute ::+   ContextRef -> CString -> CUInt -> CString -> CUInt -> IO AttributeRef+createStringAttribute = Raw.createStringAttribute++getStringAttributeKind :: AttributeRef -> Ptr CUInt -> IO CString+getStringAttributeKind = Raw.getStringAttributeKind++getStringAttributeValue :: AttributeRef -> Ptr CUInt -> IO CString+getStringAttributeValue = Raw.getStringAttributeValue++isEnumAttribute :: AttributeRef -> IO LLVM.Bool+isEnumAttribute = Raw.isEnumAttribute++isStringAttribute :: AttributeRef -> IO LLVM.Bool+isStringAttribute = Raw.isStringAttribute++-- ** Modules+moduleCreateWithName :: CString -> IO ModuleRef+moduleCreateWithName = Raw.moduleCreateWithName++moduleCreateWithNameInContext :: CString -> ContextRef -> IO ModuleRef+moduleCreateWithNameInContext = Raw.moduleCreateWithNameInContext++disposeModule :: ModuleRef -> IO ()+disposeModule = Raw.disposeModule++foreign import ccall unsafe "&LLVMDisposeModule" ptrDisposeModule+    :: FunPtr (ModuleRef -> IO ())++-- ** Data Layout+getDataLayout :: ModuleRef -> IO CString+getDataLayout = Raw.getDataLayout++setDataLayout :: ModuleRef -> CString -> IO ()+setDataLayout = Raw.setDataLayout+++-- ** Targets+getTarget :: ModuleRef -> IO CString+getTarget = Raw.getTarget++setTarget :: ModuleRef -> CString -> IO ()+setTarget = Raw.setTarget+++-- ** Dump module+dumpModule :: ModuleRef -> IO ()+dumpModule = Raw.dumpModule++setModuleInlineAsm :: ModuleRef -> CString -> IO ()+setModuleInlineAsm = Raw.setModuleInlineAsm++getModuleContext :: ModuleRef -> IO ContextRef+getModuleContext = Raw.getModuleContext+++-- ** Functions+addFunction :: ModuleRef -> CString -> TypeRef -> IO FunctionRef+addFunction = Raw.addFunction++getNamedFunction :: ModuleRef -> CString -> IO FunctionRef+getNamedFunction = Raw.getNamedFunction++getFirstFunction :: ModuleRef -> IO ValueRef+getFirstFunction = Raw.getFirstFunction++getLastFunction :: ModuleRef -> IO ValueRef+getLastFunction = Raw.getLastFunction++getNextFunction :: ValueRef -> IO ValueRef+getNextFunction = Raw.getNextFunction++getPreviousFunction :: ValueRef -> IO ValueRef+getPreviousFunction = Raw.getPreviousFunction+++-- ** Types+getTypeKindRaw :: TypeRef -> IO Raw.TypeKind+getTypeKindRaw = Raw.getTypeKind++typeIsSized :: TypeRef -> IO LLVM.Bool+typeIsSized = Raw.typeIsSized++getTypeContext :: TypeRef -> IO ContextRef+getTypeContext = Raw.getTypeContext+++-- ** Integer types+int1TypeInContext :: ContextRef -> IO TypeRef+int1TypeInContext = Raw.int1TypeInContext++int8TypeInContext :: ContextRef -> IO TypeRef+int8TypeInContext = Raw.int8TypeInContext++int16TypeInContext :: ContextRef -> IO TypeRef+int16TypeInContext = Raw.int16TypeInContext++int32TypeInContext :: ContextRef -> IO TypeRef+int32TypeInContext = Raw.int32TypeInContext++int64TypeInContext :: ContextRef -> IO TypeRef+int64TypeInContext = Raw.int64TypeInContext++intTypeInContext :: ContextRef -> CUInt -> IO TypeRef+intTypeInContext = Raw.intTypeInContext+++int1Type :: IO TypeRef+int1Type = Raw.int1Type+int8Type :: IO TypeRef+int8Type = Raw.int8Type+int16Type :: IO TypeRef+int16Type = Raw.int16Type+int32Type :: IO TypeRef+int32Type = Raw.int32Type+int64Type :: IO TypeRef+int64Type = Raw.int64Type+integerType :: CUInt -> IO TypeRef+integerType = Raw.intType+getIntTypeWidth :: TypeRef -> IO CUInt+getIntTypeWidth = Raw.getIntTypeWidth+++-- ** Real types+floatTypeInContext :: ContextRef -> IO TypeRef+floatTypeInContext = Raw.floatTypeInContext++doubleTypeInContext :: ContextRef -> IO TypeRef+doubleTypeInContext = Raw.doubleTypeInContext++x86FP80TypeInContext :: ContextRef -> IO TypeRef+x86FP80TypeInContext = Raw.x86FP80TypeInContext++fp128TypeInContext :: ContextRef -> IO TypeRef+fp128TypeInContext = Raw.fP128TypeInContext++ppcFP128TypeInContext :: ContextRef -> IO TypeRef+ppcFP128TypeInContext = Raw.pPCFP128TypeInContext+++floatType :: IO TypeRef+floatType = Raw.floatType++doubleType :: IO TypeRef+doubleType = Raw.doubleType++x86FP80Type :: IO TypeRef+x86FP80Type = Raw.x86FP80Type++fp128Type :: IO TypeRef+fp128Type = Raw.fP128Type++ppcFP128Type :: IO TypeRef+ppcFP128Type = Raw.pPCFP128Type+++-- ** Function types+-- | Create a function type.+functionType+        :: TypeRef              -- ^ return type+        -> Ptr TypeRef          -- ^ array of argument types+        -> CUInt                -- ^ number of elements in array+        -> LLVM.Bool            -- ^ non-zero if function is varargs+        -> IO TypeRef+functionType = Raw.functionType++-- | Indicate whether a function takes varargs.+isFunctionVarArg :: TypeRef -> IO LLVM.Bool+isFunctionVarArg = Raw.isFunctionVarArg++-- | Give a function's return type.+getReturnType :: TypeRef -> IO TypeRef+getReturnType = Raw.getReturnType++-- | Give the number of fixed parameters that a function takes.+countParamTypes :: TypeRef -> IO CUInt+countParamTypes = Raw.countParamTypes++-- | Fill out an array with the types of a function's fixed+-- parameters.+getParamTypes     :: TypeRef -> Ptr TypeRef -> IO ()+getParamTypes = Raw.getParamTypes+++-- ** Struct Raw.Type+structTypeInContext :: ContextRef -> Ptr TypeRef -> CUInt -> LLVM.Bool -> IO TypeRef+structTypeInContext = Raw.structTypeInContext++structType :: Ptr TypeRef -> CUInt -> LLVM.Bool -> IO TypeRef+structType = Raw.structType++structCreateNamed :: ContextRef -> CString -> IO TypeRef+structCreateNamed = Raw.structCreateNamed++getStructName :: TypeRef -> IO CString+getStructName = Raw.getStructName++structSetBody :: TypeRef -> Ptr TypeRef -> CUInt -> LLVM.Bool -> IO ()+structSetBody = Raw.structSetBody++countStructElementTypes :: TypeRef -> IO CUInt+countStructElementTypes = Raw.countStructElementTypes++getStructElementTypes :: TypeRef -> Ptr TypeRef -> IO ()+getStructElementTypes = Raw.getStructElementTypes++isPackedStruct :: TypeRef -> IO LLVM.Bool+isPackedStruct = Raw.isPackedStruct++isOpaqueStruct :: TypeRef -> IO LLVM.Bool+isOpaqueStruct = Raw.isOpaqueStruct++getTypeByName :: ModuleRef -> CString -> IO TypeRef+getTypeByName = Raw.getTypeByName+++-- ** Array, Pointer, and Vector types+arrayType+    :: TypeRef                  -- ^ element type+    -> CUInt                    -- ^ element count+    -> IO TypeRef+arrayType = Raw.arrayType++pointerType+    :: TypeRef                  -- ^ pointed-to type+    -> CUInt                    -- ^ address space+    -> IO TypeRef+pointerType = Raw.pointerType++vectorType+    :: TypeRef                  -- ^ element type+    -> CUInt                    -- ^ element count+    -> IO TypeRef+vectorType = Raw.vectorType+++-- | Get the type of a sequential type's elements.+getElementType :: TypeRef -> IO TypeRef+getElementType = Raw.getElementType++getArrayLength :: TypeRef -> IO CUInt+getArrayLength = Raw.getArrayLength++getPointerAddressSpace :: TypeRef -> IO CUInt+getPointerAddressSpace = Raw.getPointerAddressSpace++getVectorSize :: TypeRef -> IO CUInt+getVectorSize = Raw.getVectorSize+++-- ** Other Types++voidTypeInContext :: ContextRef -> IO TypeRef+voidTypeInContext = Raw.voidTypeInContext++labelTypeInContext :: ContextRef -> IO TypeRef+labelTypeInContext = Raw.labelTypeInContext++x86MMXTypeInContext :: ContextRef -> IO TypeRef+x86MMXTypeInContext = Raw.x86MMXTypeInContext+++foreign import ccall unsafe "LLVMVoidType" voidType :: IO TypeRef+foreign import ccall unsafe "LLVMLabelType" labelType :: IO TypeRef+foreign import ccall unsafe "LLVMX86MMXType" x86MMXType :: IO TypeRef++-- ** Values+typeOf :: ValueRef -> IO TypeRef+typeOf = Raw.typeOf++getValueName :: ValueRef -> IO CString+getValueName = Raw.getValueName++setValueName :: ValueRef -> CString -> IO ()+setValueName = Raw.setValueName++dumpValue :: ValueRef -> IO ()+dumpValue = Raw.dumpValue++replaceAllUsesWith :: ValueRef -> ValueRef -> IO ()+replaceAllUsesWith = Raw.replaceAllUsesWith++hasMetadata :: ValueRef -> IO LLVM.Bool+hasMetadata = fmap (LLVM.Bool . fromIntegral) . Raw.hasMetadata++getMetadata :: ValueRef -> CUInt -> IO ValueRef+getMetadata = Raw.getMetadata++setMetadata :: ValueRef -> CUInt -> ValueRef -> IO ()+setMetadata = Raw.setMetadata+++-- ** Uses+getFirstUse :: ValueRef -> IO UseRef+getFirstUse = Raw.getFirstUse++getNextUse :: UseRef -> IO UseRef+getNextUse = Raw.getNextUse++getUser :: UseRef -> IO ValueRef+getUser = Raw.getUser++getUsedValue :: UseRef -> IO ValueRef+getUsedValue = Raw.getUsedValue+++-- ** Users+getOperand :: ValueRef -> CUInt -> IO ValueRef+getOperand = Raw.getOperand++setOperand :: ValueRef -> CUInt -> ValueRef -> IO ()+setOperand = Raw.setOperand++getNumOperands :: ValueRef -> IO CUInt+getNumOperands = fmap fromIntegral . Raw.getNumOperands+++-- ** Constants+constNull :: TypeRef -> IO ValueRef+constNull = Raw.constNull++constAllOnes :: TypeRef -> IO ValueRef+constAllOnes = Raw.constAllOnes++getUndef :: TypeRef -> IO ValueRef+getUndef = Raw.getUndef++isConstant :: ValueRef -> IO LLVM.Bool+isConstant = Raw.isConstant++isUndef :: ValueRef -> IO LLVM.Bool+isUndef = Raw.isUndef++isNull :: ValueRef -> IO LLVM.Bool+isNull = Raw.isNull++constPointerNull :: TypeRef -> IO ValueRef+constPointerNull = Raw.constPointerNull+++-- ** Metadata+mDStringInContext :: ContextRef -> CString -> CUInt -> IO ValueRef+mDStringInContext = Raw.mDStringInContext++mDString :: CString -> CUInt -> IO ValueRef+mDString = Raw.mDString++mDNodeInContext :: ContextRef -> Ptr ValueRef -> CUInt -> IO ValueRef+mDNodeInContext = Raw.mDNodeInContext++mDNode :: Ptr ValueRef -> CUInt -> IO ValueRef+mDNode = Raw.mDNode++getMDString :: ValueRef -> Ptr CUInt -> IO CString+getMDString = Raw.getMDString++{-+getMDNodeNumOperands :: ValueRef -> IO CInt+getMDNodeNumOperands = Raw.getMDNodeNumOperands++getMDNodeOperand :: ValueRef -> CUInt -> IO (Ptr ValueRef)+getMDNodeOperand = Raw.getMDNodeOperand+-}++getNamedMetadataNumOperands :: ModuleRef -> CString -> IO CUInt+getNamedMetadataNumOperands = Raw.getNamedMetadataNumOperands++getNamedMetadataOperands :: ModuleRef -> CString -> Ptr ValueRef -> IO ()+getNamedMetadataOperands = Raw.getNamedMetadataOperands+++-- ** Scalar Constants+constInt :: TypeRef -> CULLong -> LLVM.Bool -> IO ValueRef+constInt = Raw.constInt++constIntOfArbitraryPrecision :: TypeRef -> CUInt -> Ptr Word64 -> IO ValueRef+constIntOfArbitraryPrecision = Raw.constIntOfArbitraryPrecision++constIntOfString :: TypeRef -> CString -> Word8 -> IO ValueRef+constIntOfString = Raw.constIntOfString++constIntOfStringAndSize :: TypeRef -> CString -> CUInt -> Word8 -> IO ValueRef+constIntOfStringAndSize = Raw.constIntOfStringAndSize++constReal :: TypeRef -> CDouble -> IO ValueRef+constReal = Raw.constReal++constRealOfString :: TypeRef -> CString -> IO ValueRef+constRealOfString = Raw.constRealOfString++constRealOfStringAndSize :: TypeRef -> CString -> CUInt -> IO ValueRef+constRealOfStringAndSize = Raw.constRealOfStringAndSize++constIntGetZExtValue :: ValueRef -> IO CULLong+constIntGetZExtValue = Raw.constIntGetZExtValue++constIntGetSExtValue :: ValueRef -> IO CLLong+constIntGetSExtValue = Raw.constIntGetSExtValue+++-- ** Composite Constants+constStringInContext :: ContextRef -> CString -> CUInt -> LLVM.Bool -> IO ValueRef+constStringInContext = Raw.constStringInContext++constStructInContext :: ContextRef -> Ptr ValueRef -> CUInt -> LLVM.Bool -> IO ValueRef+constStructInContext = Raw.constStructInContext++constString :: CString -> CUInt -> LLVM.Bool -> IO ValueRef+constString = Raw.constString++constArray :: TypeRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constArray = Raw.constArray++constStruct :: Ptr ValueRef -> CUInt -> LLVM.Bool -> IO ValueRef+constStruct = Raw.constStruct++constNamedStruct :: TypeRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constNamedStruct = Raw.constNamedStruct++constVector :: Ptr ValueRef -> CUInt -> IO ValueRef+constVector = Raw.constVector+++-- ** Constant expressions+getConstOpcode :: ValueRef -> IO Raw.Opcode+getConstOpcode = Raw.getConstOpcode++alignOf :: TypeRef -> IO ValueRef+alignOf = Raw.alignOf++sizeOf :: TypeRef -> IO ValueRef+sizeOf = Raw.sizeOf++constNeg :: ValueRef -> IO ValueRef+constNeg = Raw.constNeg++constNSWNeg :: ValueRef -> IO ValueRef+constNSWNeg = Raw.constNSWNeg++constNUWNeg :: ValueRef -> IO ValueRef+constNUWNeg = Raw.constNUWNeg++constFNeg :: ValueRef -> IO ValueRef+constFNeg = Raw.constFNeg++constNot :: ValueRef -> IO ValueRef+constNot = Raw.constNot++constAdd :: ValueRef -> ValueRef -> IO ValueRef+constAdd = Raw.constAdd++constNSWAdd :: ValueRef -> ValueRef -> IO ValueRef+constNSWAdd = Raw.constNSWAdd++constNUWAdd :: ValueRef -> ValueRef -> IO ValueRef+constNUWAdd = Raw.constNUWAdd++constFAdd :: ValueRef -> ValueRef -> IO ValueRef+constFAdd = Raw.constFAdd++constSub :: ValueRef -> ValueRef -> IO ValueRef+constSub = Raw.constSub++constNSWSub :: ValueRef -> ValueRef -> IO ValueRef+constNSWSub = Raw.constNSWSub++constNUWSub :: ValueRef -> ValueRef -> IO ValueRef+constNUWSub = Raw.constNUWSub++constFSub :: ValueRef -> ValueRef -> IO ValueRef+constFSub = Raw.constFSub++constMul :: ValueRef -> ValueRef -> IO ValueRef+constMul = Raw.constMul++constNSWMul :: ValueRef -> ValueRef -> IO ValueRef+constNSWMul = Raw.constNSWMul++constNUWMul :: ValueRef -> ValueRef -> IO ValueRef+constNUWMul = Raw.constNUWMul++constFMul :: ValueRef -> ValueRef -> IO ValueRef+constFMul = Raw.constFMul++constUDiv :: ValueRef -> ValueRef -> IO ValueRef+constUDiv = Raw.constUDiv++constSDiv :: ValueRef -> ValueRef -> IO ValueRef+constSDiv = Raw.constSDiv++constExactSDiv :: ValueRef -> ValueRef -> IO ValueRef+constExactSDiv = Raw.constExactSDiv++constFDiv :: ValueRef -> ValueRef -> IO ValueRef+constFDiv = Raw.constFDiv++constURem :: ValueRef -> ValueRef -> IO ValueRef+constURem = Raw.constURem++constSRem :: ValueRef -> ValueRef -> IO ValueRef+constSRem = Raw.constSRem++constFRem :: ValueRef -> ValueRef -> IO ValueRef+constFRem = Raw.constFRem++constAnd :: ValueRef -> ValueRef -> IO ValueRef+constAnd = Raw.constAnd++constOr :: ValueRef -> ValueRef -> IO ValueRef+constOr = Raw.constOr++constXor :: ValueRef -> ValueRef -> IO ValueRef+constXor = Raw.constXor++constICmp :: Raw.IntPredicate -> ValueRef -> ValueRef -> IO ValueRef+constICmp = Raw.constICmp++constFCmp :: Raw.RealPredicate -> ValueRef -> ValueRef -> IO ValueRef+constFCmp = Raw.constFCmp++constShl :: ValueRef -> ValueRef -> IO ValueRef+constShl = Raw.constShl++constLShr :: ValueRef -> ValueRef -> IO ValueRef+constLShr = Raw.constLShr++constAShr :: ValueRef -> ValueRef -> IO ValueRef+constAShr = Raw.constAShr++constGEP :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constGEP = Raw.constGEP++constInBoundsGEP :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constInBoundsGEP = Raw.constInBoundsGEP++constTrunc :: ValueRef -> TypeRef -> IO ValueRef+constTrunc = Raw.constTrunc++constSExt :: ValueRef -> TypeRef -> IO ValueRef+constSExt = Raw.constSExt++constZExt :: ValueRef -> TypeRef -> IO ValueRef+constZExt = Raw.constZExt++constFPTrunc :: ValueRef -> TypeRef -> IO ValueRef+constFPTrunc = Raw.constFPTrunc++constFPExt :: ValueRef -> TypeRef -> IO ValueRef+constFPExt = Raw.constFPExt++constUIToFP :: ValueRef -> TypeRef -> IO ValueRef+constUIToFP = Raw.constUIToFP++constSIToFP :: ValueRef -> TypeRef -> IO ValueRef+constSIToFP = Raw.constSIToFP++constFPToUI :: ValueRef -> TypeRef -> IO ValueRef+constFPToUI = Raw.constFPToUI++constFPToSI :: ValueRef -> TypeRef -> IO ValueRef+constFPToSI = Raw.constFPToSI++constPtrToInt :: ValueRef -> TypeRef -> IO ValueRef+constPtrToInt = Raw.constPtrToInt++constIntToPtr :: ValueRef -> TypeRef -> IO ValueRef+constIntToPtr = Raw.constIntToPtr++constBitCast :: ValueRef -> TypeRef -> IO ValueRef+constBitCast = Raw.constBitCast++constSExtOrBitCast :: ValueRef -> TypeRef -> IO ValueRef+constSExtOrBitCast = Raw.constSExtOrBitCast++constZExtOrBitCast :: ValueRef -> TypeRef -> IO ValueRef+constZExtOrBitCast = Raw.constZExtOrBitCast++constTruncOrBitCast :: ValueRef -> TypeRef -> IO ValueRef+constTruncOrBitCast = Raw.constTruncOrBitCast++constPointerCast :: ValueRef -> TypeRef -> IO ValueRef+constPointerCast = Raw.constPointerCast++constIntCast :: ValueRef -> TypeRef -> LLVM.Bool -> IO ValueRef+constIntCast = Raw.constIntCast++constFPCast :: ValueRef -> TypeRef -> IO ValueRef+constFPCast = Raw.constFPCast++constSelect :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef+constSelect = Raw.constSelect++constExtractElement :: ValueRef -> ValueRef -> IO ValueRef+constExtractElement = Raw.constExtractElement++constInsertElement :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef+constInsertElement = Raw.constInsertElement++constShuffleVector :: ValueRef -> ValueRef -> ValueRef -> IO ValueRef+constShuffleVector = Raw.constShuffleVector++constExtractValue :: ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef+constExtractValue = Raw.constExtractValue++constInsertValue :: ValueRef -> ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef+constInsertValue = Raw.constInsertValue++constInlineAsm :: TypeRef -> CString -> CString -> LLVM.Bool -> LLVM.Bool -> IO ValueRef+constInlineAsm = Raw.constInlineAsm++blockAddress :: ValueRef -> BasicBlockRef -> IO ValueRef+blockAddress = Raw.blockAddress+++-- ** Operations on globals+getGlobalParent :: ValueRef -> IO ModuleRef+getGlobalParent = Raw.getGlobalParent++isDeclaration :: ValueRef -> IO LLVM.Bool+isDeclaration = Raw.isDeclaration++getLinkage :: ValueRef -> IO Raw.Linkage+getLinkage = Raw.getLinkage++setLinkage :: ValueRef -> Raw.Linkage -> IO ()+setLinkage = Raw.setLinkage++getSection :: ValueRef -> IO CString+getSection = Raw.getSection++setSection :: ValueRef -> CString -> IO ()+setSection = Raw.setSection++getVisibility :: ValueRef -> IO Raw.Visibility+getVisibility = Raw.getVisibility++setVisibility :: ValueRef -> Raw.Visibility -> IO ()+setVisibility = Raw.setVisibility++getAlignment :: ValueRef -> IO CUInt+getAlignment = Raw.getAlignment++setAlignment :: ValueRef -> CUInt -> IO ()+setAlignment = Raw.setAlignment+++-- ** Global Variables+addGlobal :: ModuleRef -> TypeRef -> CString -> IO ValueRef+addGlobal = Raw.addGlobal++addGlobalInAddressSpace :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef+addGlobalInAddressSpace = Raw.addGlobalInAddressSpace++getNamedGlobal :: ModuleRef -> CString -> IO ValueRef+getNamedGlobal = Raw.getNamedGlobal++getFirstGlobal :: ModuleRef -> IO ValueRef+getFirstGlobal = Raw.getFirstGlobal++getLastGlobal :: ModuleRef -> IO ValueRef+getLastGlobal = Raw.getLastGlobal++getNextGlobal :: ValueRef -> IO ValueRef+getNextGlobal = Raw.getNextGlobal++getPreviousGlobal :: ValueRef -> IO ValueRef+getPreviousGlobal = Raw.getPreviousGlobal++deleteGlobal :: ValueRef -> IO ()+deleteGlobal = Raw.deleteGlobal++setInitializer :: ValueRef -> ValueRef -> IO ()+setInitializer = Raw.setInitializer++getInitializer :: ValueRef -> IO ValueRef+getInitializer = Raw.getInitializer++isThreadLocal :: ValueRef -> IO LLVM.Bool+isThreadLocal = Raw.isThreadLocal++setThreadLocal :: ValueRef -> LLVM.Bool -> IO ()+setThreadLocal = Raw.setThreadLocal++isGlobalConstant :: ValueRef -> IO LLVM.Bool+isGlobalConstant = Raw.isGlobalConstant++setGlobalConstant :: ValueRef -> LLVM.Bool -> IO ()+setGlobalConstant = Raw.setGlobalConstant+++-- ** Aliases+addAlias :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef+addAlias = Raw.addAlias++deleteFunction :: FunctionRef -> IO ()+deleteFunction = Raw.deleteFunction++getIntrinsicID :: FunctionRef -> IO CUInt+getIntrinsicID = Raw.getIntrinsicID++getFunctionCallConv :: FunctionRef -> IO Raw.CallingConvention+getFunctionCallConv = fmap Raw.CallingConvention . Raw.getFunctionCallConv++setFunctionCallConv :: FunctionRef -> Raw.CallingConvention -> IO ()+setFunctionCallConv f = Raw.setFunctionCallConv f . Raw.unCallingConvention++getGC :: ValueRef -> IO CString+getGC = Raw.getGC++setGC :: ValueRef -> CString -> IO ()+setGC = Raw.setGC+++-- ** Raw.Attribute attachment++addAttributeAtIndex :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()+addAttributeAtIndex = Raw.addAttributeAtIndex++getAttributeCountAtIndex :: ValueRef -> AttributeIndex -> IO CUInt+getAttributeCountAtIndex = Raw.getAttributeCountAtIndex++getAttributesAtIndex :: ValueRef -> AttributeIndex -> Ptr AttributeRef -> IO ()+getAttributesAtIndex = Raw.getAttributesAtIndex++getEnumAttributeAtIndex :: ValueRef -> AttributeIndex -> AttributeKind -> IO AttributeRef+getEnumAttributeAtIndex v i (AttributeKind kindId) = Raw.getEnumAttributeAtIndex v i kindId++getStringAttributeAtIndex :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef+getStringAttributeAtIndex = Raw.getStringAttributeAtIndex++removeEnumAttributeAtIndex :: ValueRef -> AttributeIndex -> AttributeKind -> IO ()+removeEnumAttributeAtIndex v i (AttributeKind kindId) = Raw.removeEnumAttributeAtIndex v i kindId++removeStringAttributeAtIndex :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()+removeStringAttributeAtIndex = Raw.removeStringAttributeAtIndex++addTargetDependentFunctionAttr :: ValueRef -> CString -> CString -> IO ()+addTargetDependentFunctionAttr = Raw.addTargetDependentFunctionAttr+++-- ** Parameters+countParams :: FunctionRef -> IO CUInt+countParams = Raw.countParams++getParams+    :: FunctionRef+    -> Ptr ValueRef             -- ^ array to fill out+    -> IO ()+getParams = Raw.getParams++getParam+    :: FunctionRef+    -> CUInt                    -- ^ offset into array+    -> IO ValueRef+getParam = Raw.getParam++getParamParent :: ValueRef -> IO ValueRef+getParamParent = Raw.getParamParent++getFirstParam :: ValueRef -> IO ValueRef+getFirstParam = Raw.getFirstParam++getLastParam :: ValueRef -> IO ValueRef+getLastParam = Raw.getLastParam++getNextParam :: ValueRef -> IO ValueRef+getNextParam = Raw.getNextParam++getPreviousParam :: ValueRef -> IO ValueRef+getPreviousParam = Raw.getPreviousParam++setParamAlignment :: ValueRef -> CUInt -> IO ()+setParamAlignment = Raw.setParamAlignment+++-- ** Basic Blocks+basicBlockAsValue :: BasicBlockRef -> IO ValueRef+basicBlockAsValue = Raw.basicBlockAsValue++valueIsBasicBlock :: ValueRef -> IO LLVM.Bool+valueIsBasicBlock = Raw.valueIsBasicBlock++valueAsBasicBlock+    :: ValueRef                 -- ^ basic block+    -> IO BasicBlockRef+valueAsBasicBlock = Raw.valueAsBasicBlock++getBasicBlockName :: BasicBlockRef -> IO CString+getBasicBlockName = Raw.getBasicBlockName++getBasicBlockParent :: BasicBlockRef -> IO ValueRef+getBasicBlockParent = Raw.getBasicBlockParent++getBasicBlockTerminator :: BasicBlockRef -> IO ValueRef+getBasicBlockTerminator = Raw.getBasicBlockTerminator++countBasicBlocks+    :: ValueRef                 -- ^ function+    -> IO CUInt+countBasicBlocks = Raw.countBasicBlocks++getBasicBlocks+    :: ValueRef                 -- ^ function+    -> Ptr BasicBlockRef        -- ^ array to fill out+    -> IO ()+getBasicBlocks = Raw.getBasicBlocks++getFirstBasicBlock :: ValueRef -> IO BasicBlockRef+getFirstBasicBlock = Raw.getFirstBasicBlock++getLastBasicBlock :: ValueRef -> IO BasicBlockRef+getLastBasicBlock = Raw.getLastBasicBlock++getNextBasicBlock :: BasicBlockRef -> IO BasicBlockRef+getNextBasicBlock = Raw.getNextBasicBlock++getPreviousBasicBlock :: BasicBlockRef -> IO BasicBlockRef+getPreviousBasicBlock = Raw.getPreviousBasicBlock++getEntryBasicBlock+    :: ValueRef                 -- ^ function+    -> IO BasicBlockRef+getEntryBasicBlock = Raw.getEntryBasicBlock++appendBasicBlockInContext :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef+appendBasicBlockInContext = Raw.appendBasicBlockInContext++insertBasicBlockInContext :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef+insertBasicBlockInContext = Raw.insertBasicBlockInContext++appendBasicBlock+    :: ValueRef                 -- ^ function+    -> CString                  -- ^ name for label+    -> IO BasicBlockRef+appendBasicBlock = Raw.appendBasicBlock++insertBasicBlock+    :: BasicBlockRef            -- ^ insert before this one+    -> CString                  -- ^ name for label+    -> IO BasicBlockRef+insertBasicBlock = Raw.insertBasicBlock++deleteBasicBlock :: BasicBlockRef -> IO ()+deleteBasicBlock = Raw.deleteBasicBlock++removeBasicBlockFromParent :: BasicBlockRef -> IO ()+removeBasicBlockFromParent = Raw.removeBasicBlockFromParent++moveBasicBlockBefore :: BasicBlockRef -> BasicBlockRef -> IO ()+moveBasicBlockBefore = Raw.moveBasicBlockBefore++moveBasicBlockAfter :: BasicBlockRef -> BasicBlockRef -> IO ()+moveBasicBlockAfter = Raw.moveBasicBlockAfter++getFirstInstruction :: BasicBlockRef -> IO ValueRef+getFirstInstruction = Raw.getFirstInstruction++getLastInstruction :: BasicBlockRef -> IO ValueRef+getLastInstruction = Raw.getLastInstruction+++-- ** Instructions+getInstructionParent :: ValueRef -> IO BasicBlockRef+getInstructionParent = Raw.getInstructionParent++getNextInstruction :: ValueRef -> IO ValueRef+getNextInstruction = Raw.getNextInstruction++getPreviousInstruction :: ValueRef -> IO ValueRef+getPreviousInstruction = Raw.getPreviousInstruction++instructionEraseFromParent :: ValueRef -> IO ()+instructionEraseFromParent = Raw.instructionEraseFromParent++getInstructionOpcode :: ValueRef -> IO Raw.Opcode+getInstructionOpcode = Raw.getInstructionOpcode++getICmpPredicate :: ValueRef -> IO Raw.IntPredicate+getICmpPredicate = Raw.getICmpPredicate+++-- ** Call sites+setInstructionCallConv :: ValueRef -> Raw.CallingConvention -> IO ()+setInstructionCallConv v =+   Raw.setInstructionCallConv v . Raw.unCallingConvention++getInstructionCallConv :: ValueRef -> IO Raw.CallingConvention+getInstructionCallConv =+   fmap Raw.CallingConvention . Raw.getInstructionCallConv++setInstrParamAlignment :: ValueRef -> CUInt -> CUInt -> IO ()+setInstrParamAlignment = Raw.setInstrParamAlignment+++addCallSiteAttribute :: ValueRef -> AttributeIndex -> AttributeRef -> IO ()+addCallSiteAttribute = Raw.addCallSiteAttribute++getCallSiteAttributeCount :: ValueRef -> AttributeIndex -> IO CUInt+getCallSiteAttributeCount = Raw.getCallSiteAttributeCount++getCallSiteAttributes :: ValueRef -> AttributeIndex -> Ptr AttributeRef -> IO ()+getCallSiteAttributes = Raw.getCallSiteAttributes++getCallSiteEnumAttribute :: ValueRef -> AttributeIndex -> AttributeKind -> IO AttributeRef+getCallSiteEnumAttribute v i (AttributeKind kindId) = Raw.getCallSiteEnumAttribute v i kindId++getCallSiteStringAttribute :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO AttributeRef+getCallSiteStringAttribute = Raw.getCallSiteStringAttribute++removeCallSiteEnumAttribute :: ValueRef -> AttributeIndex -> AttributeKind -> IO ()+removeCallSiteEnumAttribute v i (AttributeKind kindId) = Raw.removeCallSiteEnumAttribute v i kindId++removeCallSiteStringAttribute :: ValueRef -> AttributeIndex -> CString -> CUInt -> IO ()+removeCallSiteStringAttribute = Raw.removeCallSiteStringAttribute++getCalledValue :: ValueRef -> IO ValueRef+getCalledValue = Raw.getCalledValue+++-- ** Call instructions+isTailCall :: ValueRef -> IO LLVM.Bool+isTailCall = Raw.isTailCall++setTailCall :: ValueRef -> LLVM.Bool -> IO ()+setTailCall = Raw.setTailCall+++-- ** Switch Instructions+getSwitchDefaultDest :: ValueRef -> IO BasicBlockRef+getSwitchDefaultDest = Raw.getSwitchDefaultDest+++-- ** Phi Nodes+addIncoming :: ValueRef -> Ptr ValueRef -> Ptr BasicBlockRef -> CUInt -> IO ()+addIncoming = Raw.addIncoming++countIncoming :: ValueRef -> IO CUInt+countIncoming = Raw.countIncoming++getIncomingValue :: ValueRef -> CUInt -> IO ValueRef+getIncomingValue = Raw.getIncomingValue++getIncomingBlock :: ValueRef -> CUInt -> IO BasicBlockRef+getIncomingBlock = Raw.getIncomingBlock+++-- ** Builders+createBuilderInContext :: ContextRef -> IO BuilderRef+createBuilderInContext = Raw.createBuilderInContext++createBuilder :: IO BuilderRef+createBuilder = Raw.createBuilder++positionBuilder :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()+positionBuilder = Raw.positionBuilder++positionBefore :: BuilderRef -> ValueRef -> IO ()+positionBefore = Raw.positionBuilderBefore++positionAtEnd :: BuilderRef -> BasicBlockRef -> IO ()+positionAtEnd = Raw.positionBuilderAtEnd++getInsertBlock :: BuilderRef -> IO BasicBlockRef+getInsertBlock = Raw.getInsertBlock++clearInsertionPosition :: BuilderRef -> IO ()+clearInsertionPosition = Raw.clearInsertionPosition++insertIntoBuilder :: BuilderRef -> ValueRef -> IO ()+insertIntoBuilder = Raw.insertIntoBuilder++insertIntoBuilderWithName :: BuilderRef -> ValueRef -> CString -> IO ()+insertIntoBuilderWithName = Raw.insertIntoBuilderWithName++foreign import ccall unsafe "&LLVMDisposeBuilder" ptrDisposeBuilder+    :: FunPtr (BuilderRef -> IO ())+++-- ** Metadata+getCurrentDebugLocation :: BuilderRef -> IO ValueRef+getCurrentDebugLocation = Raw.getCurrentDebugLocation++setCurrentDebugLocation :: BuilderRef -> ValueRef -> IO ()+setCurrentDebugLocation = Raw.setCurrentDebugLocation++setInstDebugLocation :: BuilderRef -> ValueRef -> IO ()+setInstDebugLocation = Raw.setInstDebugLocation+++-- ** Terminators+buildRetVoid :: BuilderRef -> IO ValueRef+buildRetVoid = Raw.buildRetVoid++buildRet :: BuilderRef -> ValueRef -> IO ValueRef+buildRet = Raw.buildRet++buildAggregateRet :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef+buildAggregateRet = Raw.buildAggregateRet++buildBr :: BuilderRef -> BasicBlockRef -> IO ValueRef+buildBr = Raw.buildBr++buildCondBr :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef+buildCondBr = Raw.buildCondBr++buildSwitch :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef+buildSwitch = Raw.buildSwitch++buildIndirectBr :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef+buildIndirectBr = Raw.buildIndirectBr++buildInvoke :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef+buildInvoke = Raw.buildInvoke++buildLandingPad :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildLandingPad = Raw.buildLandingPad++buildResume :: BuilderRef -> ValueRef -> IO ValueRef+buildResume = Raw.buildResume++buildUnreachable :: BuilderRef -> IO ValueRef+buildUnreachable = Raw.buildUnreachable+++-- ** Switch instructions+addCase :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()+addCase = Raw.addCase+++-- ** IndirectBr instructions+addDestination :: ValueRef -> BasicBlockRef -> IO ()+addDestination = Raw.addDestination+++-- ** LandingPad instructions+addClause :: ValueRef -> ValueRef -> IO ()+addClause = Raw.addClause+++-- ** Resume instructions+setCleanup :: ValueRef -> LLVM.Bool -> IO ()+setCleanup = Raw.setCleanup+++-- ** Arithmetic+buildAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildAdd = Raw.buildAdd++buildNSWAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNSWAdd = Raw.buildNSWAdd++buildNUWAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNUWAdd = Raw.buildNUWAdd++buildFAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFAdd = Raw.buildFAdd++buildSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildSub = Raw.buildSub++buildNSWSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNSWSub = Raw.buildNSWSub++buildNUWSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNUWSub = Raw.buildNUWSub++buildFSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFSub = Raw.buildFSub++buildMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildMul = Raw.buildMul++buildNSWMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNSWMul = Raw.buildNSWMul++buildNUWMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildNUWMul = Raw.buildNUWMul++buildFMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFMul = Raw.buildFMul++buildUDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildUDiv = Raw.buildUDiv++buildSDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildSDiv = Raw.buildSDiv++buildExactSDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildExactSDiv = Raw.buildExactSDiv++buildFDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFDiv = Raw.buildFDiv++buildURem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildURem = Raw.buildURem++buildSRem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildSRem = Raw.buildSRem++buildFRem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFRem = Raw.buildFRem++buildShl :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildShl = Raw.buildShl++buildLShr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildLShr = Raw.buildLShr++buildAShr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildAShr = Raw.buildAShr++buildAnd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildAnd = Raw.buildAnd++buildOr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildOr = Raw.buildOr++buildXor :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildXor = Raw.buildXor++buildBinOp :: BuilderRef -> Raw.Opcode -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildBinOp = Raw.buildBinOp++buildNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildNeg = Raw.buildNeg++buildNSWNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildNSWNeg = Raw.buildNSWNeg++buildNUWNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildNUWNeg = Raw.buildNUWNeg++buildFNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildFNeg = Raw.buildFNeg++buildNot :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildNot = Raw.buildNot+++-- ** Floating point attributes+foreign import ccall unsafe "LLVMSetHasUnsafeAlgebra" setFastMath+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasUnsafeAlgebra" setHasUnsafeAlgebra+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasNoNaNs" setHasNoNaNs+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasNoInfs" setHasNoInfs+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasNoSignedZeros" setHasNoSignedZeros+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasAllowReciprocal" setHasAllowReciprocal+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasAllowReassoc" setHasAllowReassoc+    :: ValueRef -> LLVM.Bool -> IO ()+foreign import ccall unsafe "LLVMSetHasApproxFunc" setHasApproxFunc+    :: ValueRef -> LLVM.Bool -> IO ()+++-- ** Memory+buildMalloc :: BuilderRef -> TypeRef -> CString -> IO ValueRef+buildMalloc = Raw.buildMalloc++buildArrayMalloc :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef+buildArrayMalloc = Raw.buildArrayMalloc++buildAlloca :: BuilderRef -> TypeRef -> CString -> IO ValueRef+buildAlloca = Raw.buildAlloca++buildArrayAlloca :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef+buildArrayAlloca = Raw.buildArrayAlloca++buildFree :: BuilderRef -> ValueRef -> IO ValueRef+buildFree = Raw.buildFree++buildLoad :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildLoad = Raw.buildLoad++buildStore :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef+buildStore = Raw.buildStore++buildGEP :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildGEP = Raw.buildGEP++buildInBoundsGEP :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildInBoundsGEP = Raw.buildInBoundsGEP++buildStructGEP :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildStructGEP = Raw.buildStructGEP++buildGlobalString :: BuilderRef -> CString -> CString -> IO ValueRef+buildGlobalString = Raw.buildGlobalString++buildGlobalStringPtr :: BuilderRef -> CString -> CString -> IO ValueRef+buildGlobalStringPtr = Raw.buildGlobalStringPtr+++-- Casts+buildTrunc :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildTrunc = Raw.buildTrunc++buildZExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildZExt = Raw.buildZExt++buildSExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildSExt = Raw.buildSExt++buildFPToUI :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildFPToUI = Raw.buildFPToUI++buildFPToSI :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildFPToSI = Raw.buildFPToSI++buildUIToFP :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildUIToFP = Raw.buildUIToFP++buildSIToFP :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildSIToFP = Raw.buildSIToFP++buildFPTrunc :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildFPTrunc = Raw.buildFPTrunc++buildFPExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildFPExt = Raw.buildFPExt++buildPtrToInt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildPtrToInt = Raw.buildPtrToInt++buildIntToPtr :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildIntToPtr = Raw.buildIntToPtr++buildBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildBitCast = Raw.buildBitCast++buildZExtOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildZExtOrBitCast = Raw.buildZExtOrBitCast++buildSExtOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildSExtOrBitCast = Raw.buildSExtOrBitCast++buildTruncOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildTruncOrBitCast = Raw.buildTruncOrBitCast++buildCast :: BuilderRef -> Raw.Opcode -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildCast = Raw.buildCast++buildPointerCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildPointerCast = Raw.buildPointerCast++foreign import ccall unsafe "LLVMBuildIntCast" buildIntCast+    :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef++buildFPCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildFPCast = Raw.buildFPCast+++-- Comparisons+buildICmp :: BuilderRef -> Raw.IntPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildICmp = Raw.buildICmp++buildFCmp :: BuilderRef -> Raw.RealPredicate -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildFCmp = Raw.buildFCmp+++-- Miscellaneous instructions+buildPhi :: BuilderRef -> TypeRef -> CString -> IO ValueRef+buildPhi = Raw.buildPhi++buildCall :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildCall = Raw.buildCall++buildSelect :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildSelect = Raw.buildSelect++buildVAArg :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef+buildVAArg = Raw.buildVAArg++buildExtractElement :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildExtractElement = Raw.buildExtractElement++buildInsertElement :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildInsertElement = Raw.buildInsertElement++buildShuffleVector :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildShuffleVector = Raw.buildShuffleVector++buildExtractValue :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildExtractValue = Raw.buildExtractValue++buildInsertValue :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildInsertValue = Raw.buildInsertValue++buildIsNull :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildIsNull = Raw.buildIsNull++buildIsNotNull :: BuilderRef -> ValueRef -> CString -> IO ValueRef+buildIsNotNull = Raw.buildIsNotNull++buildPtrDiff :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildPtrDiff = Raw.buildPtrDiff+++-- ** Memory Buffers+createMemoryBufferWithContentsOfFile :: CString -> Ptr MemoryBufferRef -> Ptr CString -> IO LLVM.Bool+createMemoryBufferWithContentsOfFile = Raw.createMemoryBufferWithContentsOfFile++createMemoryBufferWithSTDIN :: Ptr MemoryBufferRef -> Ptr CString -> IO LLVM.Bool+createMemoryBufferWithSTDIN = Raw.createMemoryBufferWithSTDIN++disposeMemoryBuffer :: MemoryBufferRef -> IO ()+disposeMemoryBuffer = Raw.disposeMemoryBuffer+++-- ** Pass Registry+getGlobalPassRegistry :: IO PassRegistryRef+getGlobalPassRegistry = Raw.getGlobalPassRegistry+++-- ** Pass Managers+createPassManager :: IO PassManagerRef+createPassManager = Raw.createPassManager++createFunctionPassManagerForModule :: ModuleRef -> IO PassManagerRef+createFunctionPassManagerForModule = Raw.createFunctionPassManagerForModule++runPassManager :: PassManagerRef -> ModuleRef -> IO LLVM.Bool+runPassManager = Raw.runPassManager++initializeFunctionPassManager :: PassManagerRef -> IO LLVM.Bool+initializeFunctionPassManager = Raw.initializeFunctionPassManager++runFunctionPassManager :: PassManagerRef -> ValueRef -> IO LLVM.Bool+runFunctionPassManager = Raw.runFunctionPassManager++finalizeFunctionPassManager :: PassManagerRef -> IO LLVM.Bool+finalizeFunctionPassManager = Raw.finalizeFunctionPassManager++disposePassManager :: PassManagerRef -> IO ()+disposePassManager = Raw.disposePassManager++foreign import ccall unsafe "&LLVMDisposePassManager" ptrDisposePassManager+    :: FunPtr (PassManagerRef -> IO ())+++-- ** Functions from extras.cpp+foreign import ccall unsafe "LLVMValueGetNumUses" getNumUses+    :: ValueRef -> IO CInt+foreign import ccall unsafe "LLVMInstGetOpcode" instGetOpcode+    :: ValueRef -> IO CInt+foreign import ccall unsafe "LLVMCmpInstGetPredicate" cmpInstGetIntPredicate+    :: ValueRef -> IO Raw.IntPredicate+foreign import ccall unsafe "LLVMCmpInstGetPredicate" cmpInstGetRealPredicate+    :: ValueRef -> IO Raw.RealPredicate