llvm-ffi 14.0 → 15.0
raw patch · 11 files changed
+2105/−114 lines, 11 files
Files
- example/JIT.hs +3/−2
- example/Offset.hs +1/−1
- llvm-ffi.cabal +46/−26
- src/14/LLVM/Raw/Core.hsc +15/−0
- src/15/LLVM/Raw/Core.hsc +1948/−0
- src/LLVM/FFI/Core.hsc +31/−78
- src/LLVM/FFI/Transforms/IPO.hs +0/−2
- src/LLVM/FFI/Transforms/PassManagerBuilder.hs +0/−3
- src/LLVM/FFI/Transforms/Scalar.hs +0/−2
- src/before14/LLVM/FFI/Core14.hs +47/−0
- src/from14/LLVM/FFI/Core14.hs +14/−0
example/JIT.hs view
@@ -67,7 +67,7 @@ block <- withCString "_L1" $ Core.appendBasicBlock func Core.positionAtEnd builder block param <- Core.getParam func 0- loaded <- withCString "" $ Core.buildLoad builder param+ loaded <- withCString "" $ Core.buildLoad2 builder vectorType param int32Type <- Core.int32Type let funcParams = [vectorType, int32Type] funcType <-@@ -83,7 +83,8 @@ let callParams = [loaded, const1] call <- withArrayLen callParams $ \len ps ->- withCString "" $ Core.buildCall builder roundFunc ps len+ withCString "" $+ Core.buildCall2 builder funcType roundFunc ps len Core.setInstructionCallConv call $ Core.fromCallingConvention Core.C context <- Core.getGlobalContext
example/Offset.hs view
@@ -30,7 +30,7 @@ -- crash elementPtr <- withArrayLen [zero,one] $ \n ixsPtr ->- LLVM.constGEP nullPtr ixsPtr n+ LLVM.constGEP2 structType nullPtr ixsPtr n putStrLn "ptrToInt" elementOffset <- LLVM.constPtrToInt elementPtr int64Type LLVM.constIntGetZExtValue elementOffset
llvm-ffi.cabal view
@@ -1,6 +1,6 @@ Cabal-Version: 2.2 Name: llvm-ffi-Version: 14.0+Version: 15.0 License: BSD-3-Clause License-File: LICENSE Synopsis: FFI bindings to the LLVM compiler toolkit.@@ -17,15 +17,15 @@ to the LLVM installation directories manually. It is recommended to add options to your global @.cabal/config@: .- > extra-include-dirs: /usr/lib/llvm-14/include- > extra-lib-dirs: /usr/lib/llvm-14/lib+ > extra-include-dirs: /usr/lib/llvm-15/include+ > extra-lib-dirs: /usr/lib/llvm-15/lib . This works for both @v1-build@ and @v2-build@. The shown paths work for Debian and Ubuntu using the LLVM repositories at <https://apt.llvm.org/>. You can obtain them with .- > llvm-config-14 --includedir --libdir+ > llvm-config-15 --includedir --libdir . You can choose specific LLVM versions per project. For @v1-builds@ it works like so:@@ -51,7 +51,7 @@ > cabal install -fpkgConfig . We try to stay up to date with LLVM releases.- The current version of this package is compatible with LLVM 3.9-14.+ The current version of this package is compatible with LLVM 3.9-15. Please understand that the package may or may not work against older LLVM releases. .@@ -165,12 +165,17 @@ Manual: True Default: False +Flag llvm1400+ Description: use LLVM-14 instead of latest supported LLVM+ Manual: True+ Default: False+ Source-Repository head Type: darcs Location: https://hub.darcs.net/thielema/llvm-ffi/ Source-Repository this- Tag: 14.0+ Tag: 15.0 Type: darcs Location: https://hub.darcs.net/thielema/llvm-ffi/ @@ -214,6 +219,7 @@ LLVM.Target.X86 LLVM.Target.XCore LLVM.Raw.Core+ LLVM.FFI.Core14 If flag(llvm309) If flag(pkgConfig)@@ -223,7 +229,7 @@ PkgConfig-Depends: llvm == 3.9.* Else Extra-Libraries: LLVM-3.9- Hs-Source-Dirs: src/3.9+ Hs-Source-Dirs: src/3.9, src/before14 CC-Options: -DHS_LLVM_VERSION=309 Cxx-Options: -DHS_LLVM_VERSION=309 CPP-Options: -DHS_LLVM_VERSION=309@@ -236,7 +242,7 @@ PkgConfig-Depends: llvm == 4.0.* Else Extra-Libraries: LLVM-4.0- Hs-Source-Dirs: src/4.0+ Hs-Source-Dirs: src/4.0, src/before14 CC-Options: -DHS_LLVM_VERSION=400 Cxx-Options: -DHS_LLVM_VERSION=400 CPP-Options: -DHS_LLVM_VERSION=400@@ -249,7 +255,7 @@ PkgConfig-Depends: llvm == 5.0.* Else Extra-Libraries: LLVM-5.0- Hs-Source-Dirs: src/5.0+ Hs-Source-Dirs: src/5.0, src/before14 CC-Options: -DHS_LLVM_VERSION=500 Cxx-Options: -DHS_LLVM_VERSION=500 CPP-Options: -DHS_LLVM_VERSION=500@@ -262,7 +268,7 @@ PkgConfig-Depends: llvm == 6.0.* Else Extra-Libraries: LLVM-6.0- Hs-Source-Dirs: src/6.0+ Hs-Source-Dirs: src/6.0, src/before14 CC-Options: -DHS_LLVM_VERSION=600 Cxx-Options: -DHS_LLVM_VERSION=600 CPP-Options: -DHS_LLVM_VERSION=600@@ -275,7 +281,7 @@ PkgConfig-Depends: llvm == 7.* Else Extra-Libraries: LLVM-7- Hs-Source-Dirs: src/7+ Hs-Source-Dirs: src/7, src/before14 CC-Options: -DHS_LLVM_VERSION=700 Cxx-Options: -DHS_LLVM_VERSION=700 CPP-Options: -DHS_LLVM_VERSION=700@@ -288,7 +294,7 @@ PkgConfig-Depends: llvm == 8.* Else Extra-Libraries: LLVM-8- Hs-Source-Dirs: src/8+ Hs-Source-Dirs: src/8, src/before14 CC-Options: -DHS_LLVM_VERSION=800 Cxx-Options: -DHS_LLVM_VERSION=800 CPP-Options: -DHS_LLVM_VERSION=800@@ -301,7 +307,7 @@ PkgConfig-Depends: llvm == 9.* Else Extra-Libraries: LLVM-9- Hs-Source-Dirs: src/9+ Hs-Source-Dirs: src/9, src/before14 CC-Options: -DHS_LLVM_VERSION=900 Cxx-Options: -DHS_LLVM_VERSION=900 CPP-Options: -DHS_LLVM_VERSION=900@@ -315,7 +321,7 @@ PkgConfig-Depends: llvm == 10.* Else Extra-Libraries: LLVM-10- Hs-Source-Dirs: src/10+ Hs-Source-Dirs: src/10, src/before14 CC-Options: -DHS_LLVM_VERSION=1000 Cxx-Options: -DHS_LLVM_VERSION=1000 CPP-Options: -DHS_LLVM_VERSION=1000@@ -328,7 +334,7 @@ PkgConfig-Depends: llvm == 11.* Else Extra-Libraries: LLVM-11- Hs-Source-Dirs: src/11+ Hs-Source-Dirs: src/11, src/before14 CC-Options: -DHS_LLVM_VERSION=1100 Cxx-Options: -DHS_LLVM_VERSION=1100 CPP-Options: -DHS_LLVM_VERSION=1100@@ -341,7 +347,7 @@ PkgConfig-Depends: llvm == 12.* Else Extra-Libraries: LLVM-12- Hs-Source-Dirs: src/12+ Hs-Source-Dirs: src/12, src/before14 CC-Options: -DHS_LLVM_VERSION=1200 Cxx-Options: -DHS_LLVM_VERSION=1200 CPP-Options: -DHS_LLVM_VERSION=1200@@ -354,22 +360,36 @@ PkgConfig-Depends: llvm == 13.* Else Extra-Libraries: LLVM-13- Hs-Source-Dirs: src/13+ Hs-Source-Dirs: src/13, src/before14 CC-Options: -DHS_LLVM_VERSION=1300 Cxx-Options: -DHS_LLVM_VERSION=1300 CPP-Options: -DHS_LLVM_VERSION=1300 Else- If flag(pkgConfig)- If flag(specificPkgConfig)- PkgConfig-Depends: llvm-14+ Hs-Source-Dirs: src/from14+ If flag(llvm1400)+ If flag(pkgConfig)+ If flag(specificPkgConfig)+ PkgConfig-Depends: llvm-14+ Else+ PkgConfig-Depends: llvm == 14.* Else- PkgConfig-Depends: llvm == 14.*+ Extra-Libraries: LLVM-14+ Hs-Source-Dirs: src/14+ CC-Options: -DHS_LLVM_VERSION=1400+ Cxx-Options: -DHS_LLVM_VERSION=1400+ CPP-Options: -DHS_LLVM_VERSION=1400 Else- Extra-Libraries: LLVM-14- Hs-Source-Dirs: src/14- CC-Options: -DHS_LLVM_VERSION=1400- Cxx-Options: -DHS_LLVM_VERSION=1400- CPP-Options: -DHS_LLVM_VERSION=1400+ If flag(pkgConfig)+ If flag(specificPkgConfig)+ PkgConfig-Depends: llvm-15+ Else+ PkgConfig-Depends: llvm == 15.*+ Else+ Extra-Libraries: LLVM-15+ Hs-Source-Dirs: src/15+ CC-Options: -DHS_LLVM_VERSION=1500+ Cxx-Options: -DHS_LLVM_VERSION=1500+ CPP-Options: -DHS_LLVM_VERSION=1500 CC-Options: -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1 CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
src/14/LLVM/Raw/Core.hsc view
@@ -834,9 +834,15 @@ foreign import ccall unsafe "LLVMConstGEP" constGEP :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef +foreign import ccall unsafe "LLVMConstGEP2" constGEP2+ :: TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef+ foreign import ccall unsafe "LLVMConstInBoundsGEP" constInBoundsGEP :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef +foreign import ccall unsafe "LLVMConstInBoundsGEP2" constInBoundsGEP2+ :: TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef+ foreign import ccall unsafe "LLVMConstTrunc" constTrunc :: ValueRef -> TypeRef -> IO ValueRef @@ -1047,6 +1053,9 @@ foreign import ccall unsafe "LLVMAddAlias" addAlias :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef +foreign import ccall unsafe "LLVMAddAlias2" addAlias2+ :: ModuleRef -> TypeRef -> CUInt -> ValueRef -> CString -> IO ValueRef+ foreign import ccall unsafe "LLVMGetNamedGlobalAlias" getNamedGlobalAlias :: ModuleRef -> CString -> CSize -> IO ValueRef @@ -1437,6 +1446,9 @@ foreign import ccall unsafe "LLVMSetIsInBounds" setIsInBounds :: ValueRef -> LLVM.Bool -> IO () +foreign import ccall unsafe "LLVMGetGEPSourceElementType" getGEPSourceElementType+ :: ValueRef -> IO TypeRef+ foreign import ccall unsafe "LLVMAddIncoming" addIncoming :: ValueRef -> (Ptr ValueRef) -> (Ptr BasicBlockRef) -> CUInt -> IO () @@ -1886,6 +1898,9 @@ foreign import ccall unsafe "LLVMBuildPtrDiff" buildPtrDiff :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildPtrDiff2" buildPtrDiff2+ :: BuilderRef -> TypeRef -> ValueRef -> ValueRef -> CString -> IO ValueRef foreign import ccall unsafe "LLVMBuildFence" buildFence :: BuilderRef -> AtomicOrdering -> LLVM.Bool -> CString -> IO ValueRef
+ src/15/LLVM/Raw/Core.hsc view
@@ -0,0 +1,1948 @@+{-# 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 "LLVMContextSetOpaquePointers" contextSetOpaquePointers+ :: 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 "LLVMCreateTypeAttribute" createTypeAttribute+ :: ContextRef -> CUInt -> TypeRef -> IO AttributeRef++foreign import ccall unsafe "LLVMGetTypeAttributeValue" getTypeAttributeValue+ :: AttributeRef -> IO TypeRef++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 "LLVMIsTypeAttribute" isTypeAttribute+ :: AttributeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMGetTypeByName2" getTypeByName2+ :: ContextRef -> CString -> IO TypeRef++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 -> LLVM.Bool -> 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 "LLVMBFloatTypeInContext" bFloatTypeInContext+ :: 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 "LLVMBFloatType" bFloatType+ :: 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 "LLVMPointerTypeIsOpaque" pointerTypeIsOpaque+ :: TypeRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMPointerTypeInContext" pointerTypeInContext+ :: ContextRef -> 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 "LLVMScalableVectorType" scalableVectorType+ :: 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 "LLVMX86AMXTypeInContext" x86AMXTypeInContext+ :: 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 "LLVMX86AMXType" x86AMXType+ :: 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 "LLVMIsPoison" isPoison+ :: 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 "LLVMGetPoison" getPoison+ :: 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 "LLVMGetAggregateElement" getAggregateElement+ :: 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 "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 "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 "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 "LLVMConstGEP2" constGEP2+ :: TypeRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef++foreign import ccall unsafe "LLVMConstInBoundsGEP2" constInBoundsGEP2+ :: TypeRef -> 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 "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 "LLVMAddAlias2" addAlias2+ :: ModuleRef -> TypeRef -> CUInt -> 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 "LLVMIntrinsicCopyOverloadedName2" intrinsicCopyOverloadedName2+ :: ModuleRef -> 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 "LLVMDeleteInstruction" deleteInstruction+ :: 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 -> AttributeIndex -> 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 "LLVMGetGEPSourceElementType" getGEPSourceElementType+ :: ValueRef -> IO TypeRef++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 "LLVMAddMetadataToInst" addMetadataToInst+ :: 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 "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 "LLVMBuildLoad2" buildLoad2+ :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef++foreign import ccall unsafe "LLVMBuildStore" buildStore+ :: BuilderRef -> ValueRef -> ValueRef -> 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 "LLVMGetWeak" getWeak+ :: ValueRef -> IO LLVM.Bool++foreign import ccall unsafe "LLVMSetWeak" setWeak+ :: 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 "LLVMGetAtomicRMWBinOp" getAtomicRMWBinOp+ :: ValueRef -> IO AtomicRMWBinOp++foreign import ccall unsafe "LLVMSetAtomicRMWBinOp" setAtomicRMWBinOp+ :: ValueRef -> AtomicRMWBinOp -> 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 "LLVMGetCastOpcode" getCastOpcode+ :: ValueRef -> LLVM.Bool -> TypeRef -> LLVM.Bool -> IO Opcode++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 "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 "LLVMBuildFreeze" buildFreeze+ :: BuilderRef -> ValueRef -> 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 "LLVMBuildPtrDiff2" buildPtrDiff2+ :: BuilderRef -> TypeRef -> 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 "LLVMGetNumMaskElements" getNumMaskElements+ :: ValueRef -> IO CUInt++foreign import ccall unsafe "LLVMGetUndefMaskElem" getUndefMaskElem+ :: IO CInt++foreign import ccall unsafe "LLVMGetMaskValue" getMaskValue+ :: ValueRef -> CUInt -> IO CInt++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
@@ -216,22 +216,12 @@ , constAdd , constNSWAdd , constNUWAdd- , constFAdd , constSub , constNSWSub , constNUWSub- , constFSub , constMul , constNSWMul , constNUWMul- , constFMul- , constUDiv- , constSDiv- , constExactSDiv- , constFDiv- , constURem- , constSRem- , constFRem , constAnd , constOr , constXor@@ -240,8 +230,8 @@ , constShl , constLShr , constAShr- , constGEP- , constInBoundsGEP+ , constGEP2+ , constInBoundsGEP2 , constTrunc , constSExt , constZExt@@ -264,8 +254,6 @@ , constExtractElement , constInsertElement , constShuffleVector- , constExtractValue- , constInsertValue , constInlineAsm , blockAddress @@ -325,7 +313,7 @@ , setGlobalConstant -- ** Aliases- , addAlias+ , addAlias2 -- * Parameter passing , Raw.Attribute@@ -470,7 +458,7 @@ , buildCondBr , buildSwitch , buildIndirectBr- , buildInvoke+ , buildInvoke2 , buildLandingPad , buildResume , buildUnreachable@@ -519,11 +507,11 @@ , buildAlloca , buildArrayAlloca , buildFree- , buildLoad+ , buildLoad2 , buildStore- , buildGEP- , buildInBoundsGEP- , buildStructGEP+ , buildGEP2+ , buildInBoundsGEP2+ , buildStructGEP2 , buildGlobalString , buildGlobalStringPtr @@ -554,7 +542,7 @@ -- ** Miscellaneous instructions , buildPhi- , buildCall+ , buildCall2 , buildSelect , buildVAArg , buildExtractElement@@ -564,7 +552,7 @@ , buildInsertValue , buildIsNull , buildIsNotNull- , buildPtrDiff+ , buildPtrDiff2 -- * Memory buffers , Raw.MemoryBuffer@@ -601,6 +589,7 @@ import qualified LLVM.FFI.Version as Version import qualified LLVM.FFI.Base as LLVM+import qualified LLVM.FFI.Core14 as Core14 import qualified LLVM.Raw.Core as Raw import LLVM.Raw.Core ( PassRegistryRef, ContextRef, AttributeRef, AttributeIndex,@@ -1388,9 +1377,6 @@ constNUWAdd :: ValueRef -> ValueRef -> IO ValueRef constNUWAdd = Raw.constNUWAdd -constFAdd :: ValueRef -> ValueRef -> IO ValueRef-constFAdd = Raw.constFAdd- constSub :: ValueRef -> ValueRef -> IO ValueRef constSub = Raw.constSub @@ -1400,9 +1386,6 @@ constNUWSub :: ValueRef -> ValueRef -> IO ValueRef constNUWSub = Raw.constNUWSub -constFSub :: ValueRef -> ValueRef -> IO ValueRef-constFSub = Raw.constFSub- constMul :: ValueRef -> ValueRef -> IO ValueRef constMul = Raw.constMul @@ -1412,30 +1395,6 @@ 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 @@ -1460,11 +1419,11 @@ constAShr :: ValueRef -> ValueRef -> IO ValueRef constAShr = Raw.constAShr -constGEP :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef-constGEP = Raw.constGEP+constGEP2 :: TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constGEP2 = Core14.constGEP2 -constInBoundsGEP :: ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef-constInBoundsGEP = Raw.constInBoundsGEP+constInBoundsGEP2 :: TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constInBoundsGEP2 = Core14.constInBoundsGEP2 constTrunc :: ValueRef -> TypeRef -> IO ValueRef constTrunc = Raw.constTrunc@@ -1532,12 +1491,6 @@ 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 @@ -1622,8 +1575,8 @@ -- ** Aliases-addAlias :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef-addAlias = Raw.addAlias+addAlias2 :: ModuleRef -> TypeRef -> CUInt -> ValueRef -> CString -> IO ValueRef+addAlias2 = Core14.addAlias2 deleteFunction :: FunctionRef -> IO () deleteFunction = Raw.deleteFunction@@ -1942,8 +1895,8 @@ buildIndirectBr :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef buildIndirectBr = Raw.buildIndirectBr -buildInvoke :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef-buildInvoke = Raw.buildInvoke+buildInvoke2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef+buildInvoke2 = Core14.buildInvoke2 buildLandingPad :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef buildLandingPad = Raw.buildLandingPad@@ -2105,20 +2058,20 @@ buildFree :: BuilderRef -> ValueRef -> IO ValueRef buildFree = Raw.buildFree -buildLoad :: BuilderRef -> ValueRef -> CString -> IO ValueRef-buildLoad = Raw.buildLoad+buildLoad2 :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef+buildLoad2 = Core14.buildLoad2 buildStore :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef buildStore = Raw.buildStore -buildGEP :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef-buildGEP = Raw.buildGEP+buildGEP2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildGEP2 = Core14.buildGEP2 -buildInBoundsGEP :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef-buildInBoundsGEP = Raw.buildInBoundsGEP+buildInBoundsGEP2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildInBoundsGEP2 = Core14.buildInBoundsGEP2 -buildStructGEP :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef-buildStructGEP = Raw.buildStructGEP+buildStructGEP2 :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildStructGEP2 = Core14.buildStructGEP2 buildGlobalString :: BuilderRef -> CString -> CString -> IO ValueRef buildGlobalString = Raw.buildGlobalString@@ -2198,8 +2151,8 @@ buildPhi :: BuilderRef -> TypeRef -> CString -> IO ValueRef buildPhi = Raw.buildPhi -buildCall :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef-buildCall = Raw.buildCall+buildCall2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildCall2 = Core14.buildCall2 buildSelect :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef buildSelect = Raw.buildSelect@@ -2228,8 +2181,8 @@ buildIsNotNull :: BuilderRef -> ValueRef -> CString -> IO ValueRef buildIsNotNull = Raw.buildIsNotNull -buildPtrDiff :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef-buildPtrDiff = Raw.buildPtrDiff+buildPtrDiff2 :: BuilderRef -> TypeRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildPtrDiff2 = Core14.buildPtrDiff2 -- ** Memory Buffers
src/LLVM/FFI/Transforms/IPO.hs view
@@ -7,8 +7,6 @@ import LLVM.FFI.Core (PassManagerRef) -foreign import ccall unsafe "LLVMAddArgumentPromotionPass" addArgumentPromotionPass- :: PassManagerRef -> IO () foreign import ccall unsafe "LLVMAddConstantMergePass" addConstantMergePass :: PassManagerRef -> IO () foreign import ccall unsafe "LLVMAddDeadArgEliminationPass" addDeadArgEliminationPass
src/LLVM/FFI/Transforms/PassManagerBuilder.hs view
@@ -51,6 +51,3 @@ foreign import ccall unsafe "LLVMPassManagerBuilderPopulateModulePassManager" populateModulePassManager :: PassManagerBuilderRef -> PassManagerRef -> IO ()--foreign import ccall unsafe "LLVMPassManagerBuilderPopulateLTOPassManager" populateLTOPassManager- :: PassManagerBuilderRef -> PassManagerRef -> LLVM.Bool -> LLVM.Bool -> IO ()
src/LLVM/FFI/Transforms/Scalar.hs view
@@ -31,8 +31,6 @@ :: PassManagerRef -> IO () foreign import ccall unsafe "LLVMAddLoopUnrollPass" addLoopUnrollPass :: PassManagerRef -> IO ()-foreign import ccall unsafe "LLVMAddLoopUnswitchPass" addLoopUnswitchPass- :: PassManagerRef -> IO () foreign import ccall unsafe "LLVMAddMemCpyOptPass" addMemCpyOptPass :: PassManagerRef -> IO () foreign import ccall unsafe "LLVMAddPromoteMemoryToRegisterPass" addPromoteMemoryToRegisterPass
+ src/before14/LLVM/FFI/Core14.hs view
@@ -0,0 +1,47 @@+module LLVM.FFI.Core14 where++import qualified LLVM.Raw.Core as Raw++import LLVM.Raw.Core (TypeRef, ValueRef, ModuleRef, BasicBlockRef, BuilderRef)++import qualified Foreign.C.Types as C+import Foreign.C.String (CString)+import Foreign.Ptr (Ptr)+++type CDouble = C.CDouble+type CInt = C.CInt+type CUInt = C.CUInt+type CLLong = C.CLLong+type CULLong = C.CULLong+++constGEP2 :: TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constGEP2 _typ = Raw.constGEP++constInBoundsGEP2 :: TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> IO ValueRef+constInBoundsGEP2 _typ = Raw.constInBoundsGEP++addAlias2 :: ModuleRef -> TypeRef -> CUInt -> ValueRef -> CString -> IO ValueRef+addAlias2 bld typ _addrSpace = Raw.addAlias bld typ++buildInvoke2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef+buildInvoke2 bld _typ = Raw.buildInvoke bld++buildLoad2 :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef+buildLoad2 bld _typ = Raw.buildLoad bld++buildGEP2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildGEP2 bld _typ = Raw.buildGEP bld++buildInBoundsGEP2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildInBoundsGEP2 bld _typ = Raw.buildInBoundsGEP bld++buildStructGEP2 :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef+buildStructGEP2 bld _typ = Raw.buildStructGEP bld++buildCall2 :: BuilderRef -> TypeRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef+buildCall2 bld _typ = Raw.buildCall bld++buildPtrDiff2 :: BuilderRef -> TypeRef -> ValueRef -> ValueRef -> CString -> IO ValueRef+buildPtrDiff2 bld _typ = Raw.buildPtrDiff bld
+ src/from14/LLVM/FFI/Core14.hs view
@@ -0,0 +1,14 @@+module LLVM.FFI.Core14 (+ Raw.constGEP2,+ Raw.constInBoundsGEP2,+ Raw.addAlias2,+ Raw.buildInvoke2,+ Raw.buildLoad2,+ Raw.buildGEP2,+ Raw.buildInBoundsGEP2,+ Raw.buildStructGEP2,+ Raw.buildCall2,+ Raw.buildPtrDiff2,+ ) where++import qualified LLVM.Raw.Core as Raw