llvm-ffi 9.0.0 → 9.1.0
raw patch · 10 files changed
+14345/−1828 lines, 10 files
Files
- example/JIT.hs +1/−1
- llvm-ffi.cabal +10/−3
- src/3.9/LLVM/Raw/Core.hsc +1636/−0
- src/4.0/LLVM/Raw/Core.hsc +1618/−0
- src/5.0/LLVM/Raw/Core.hsc +1630/−0
- src/6.0/LLVM/Raw/Core.hsc +1636/−0
- src/7/LLVM/Raw/Core.hsc +1744/−0
- src/8/LLVM/Raw/Core.hsc +1867/−0
- src/9/LLVM/Raw/Core.hsc +1924/−0
- src/LLVM/FFI/Core.hsc +2279/−1824
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