-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | FFI bindings to the LLVM compiler toolkit.
--   
--   FFI bindings to the LLVM compiler toolkit.
--   
--   We try to stay up to date with LLVM releases. The current version of
--   this package is compatible with LLVM 3.0 and 2.9. Please understand
--   that the package may or may not work against older LLVM releases; we
--   don't have the time or resources to test across multiple releases.
--   
--   <ul>
--   <li>New in 3.0: Builds against LLVM 3.0.</li>
--   <li>New in 0.9.1.1: Builds against LLVM 2.9.</li>
--   <li>New in 0.9.1.0: Util.Memory for memory related intrinsics.</li>
--   <li>New in 0.9.0.0: Adapted to LLVM 2.8 (removed support for Union
--   types).</li>
--   </ul>
@package llvm-base
@version 3.0.1.0

module LLVM.Target.Native

-- | Initialize jitter to the native target. The operation is idempotent.
initializeNativeTarget :: IO ()


-- | This module provides direct access to the LLVM C bindings.
module LLVM.FFI.Core
data Module
type ModuleRef = Ptr Module
moduleCreateWithName :: CString -> IO ModuleRef
disposeModule :: ModuleRef -> IO ()
ptrDisposeModule :: FunPtr (ModuleRef -> IO ())
getDataLayout :: ModuleRef -> IO CString
setDataLayout :: ModuleRef -> CString -> IO ()
getTarget :: ModuleRef -> IO CString
setTarget :: ModuleRef -> CString -> IO ()
data ModuleProvider
type ModuleProviderRef = Ptr ModuleProvider
createModuleProviderForExistingModule :: ModuleRef -> IO ModuleProviderRef
ptrDisposeModuleProvider :: FunPtr (ModuleProviderRef -> IO ())
data Type
type TypeRef = Ptr Type
getTypeKind :: TypeRef -> IO TypeKind
data TypeKind
VoidTypeKind :: TypeKind
FloatTypeKind :: TypeKind
DoubleTypeKind :: TypeKind
X86_FP80TypeKind :: TypeKind
FP128TypeKind :: TypeKind
PPC_FP128TypeKind :: TypeKind
LabelTypeKind :: TypeKind
IntegerTypeKind :: TypeKind
FunctionTypeKind :: TypeKind
StructTypeKind :: TypeKind
ArrayTypeKind :: TypeKind
PointerTypeKind :: TypeKind
OpaqueTypeKind :: TypeKind
VectorTypeKind :: TypeKind
int1Type :: TypeRef
int8Type :: TypeRef
int16Type :: TypeRef
int32Type :: TypeRef
int64Type :: TypeRef

-- | An integer type of the given width.
integerType :: CUInt -> TypeRef
getIntTypeWidth :: TypeRef -> IO CUInt
floatType :: TypeRef
doubleType :: TypeRef
x86FP80Type :: TypeRef
fp128Type :: TypeRef
ppcFP128Type :: TypeRef

-- | Create a function type.
functionType :: TypeRef -> Ptr TypeRef -> CUInt -> CInt -> TypeRef

-- | Indicate whether a function takes varargs.
isFunctionVarArg :: TypeRef -> IO CInt

-- | Give a function's return type.
getReturnType :: TypeRef -> IO TypeRef

-- | Give the number of fixed parameters that a function takes.
countParamTypes :: TypeRef -> IO CUInt

-- | Fill out an array with the types of a function's fixed parameters.
getParamTypes :: TypeRef -> Ptr TypeRef -> IO ()
voidType :: TypeRef
labelType :: TypeRef
arrayType :: TypeRef -> CUInt -> TypeRef
pointerType :: TypeRef -> CUInt -> TypeRef
vectorType :: TypeRef -> CUInt -> TypeRef

-- | Get the type of a sequential type's elements.
getElementType :: TypeRef -> IO TypeRef
getArrayLength :: TypeRef -> IO CUInt
getPointerAddressSpace :: TypeRef -> IO CUInt
getVectorSize :: TypeRef -> IO CUInt
structType :: Ptr TypeRef -> CUInt -> CInt -> TypeRef
countStructElementTypes :: TypeRef -> CUInt
getStructElementTypes :: TypeRef -> Ptr TypeRef -> IO ()
isPackedStruct :: TypeRef -> CInt
structCreateNamed :: ContextRef -> CString -> IO TypeRef
getStructName :: TypeRef -> IO CString
structSetBody :: TypeRef -> Ptr TypeRef -> CUInt -> CUInt -> IO ()
data Value
type ValueRef = Ptr Value
typeOf :: ValueRef -> IO TypeRef
getValueName :: ValueRef -> IO CString
setValueName :: ValueRef -> CString -> IO ()
dumpValue :: ValueRef -> IO ()
constNull :: TypeRef -> ValueRef
constAllOnes :: TypeRef -> ValueRef
getUndef :: TypeRef -> ValueRef
isConstant :: ValueRef -> IO CInt
isNull :: ValueRef -> IO CInt
isUndef :: ValueRef -> IO CInt

-- | An enumeration for the kinds of linkage for global values.
data Linkage

-- | Externally visible function
ExternalLinkage :: Linkage
AvailableExternallyLinkage :: Linkage

-- | Keep one copy of function when linking (inline)
LinkOnceAnyLinkage :: Linkage

-- | Same, but only replaced by something equivalent.
LinkOnceODRLinkage :: Linkage

-- | Keep one copy of named function when linking (weak)
WeakAnyLinkage :: Linkage

-- | Same, but only replaced by something equivalent.
WeakODRLinkage :: Linkage

-- | Special purpose, only applies to global arrays
AppendingLinkage :: Linkage

-- | Rename collisions when linking (static functions)
InternalLinkage :: Linkage

-- | Like Internal, but omit from symbol table
PrivateLinkage :: Linkage

-- | Function to be imported from DLL
DLLImportLinkage :: Linkage

-- | Function to be accessible from DLL
DLLExportLinkage :: Linkage

-- | ExternalWeak linkage description
ExternalWeakLinkage :: Linkage

-- | Stand-in functions for streaming fns from BC files
GhostLinkage :: Linkage

-- | Tentative definitions
CommonLinkage :: Linkage

-- | Like Private, but linker removes.
LinkerPrivateLinkage :: Linkage
fromLinkage :: Linkage -> CUInt
toLinkage :: CUInt -> Linkage
getLinkage :: ValueRef -> IO CUInt
setLinkage :: ValueRef -> CUInt -> IO ()

-- | An enumeration for the kinds of visibility of global values.
data Visibility

-- | The GV is visible
DefaultVisibility :: Visibility

-- | The GV is hidden
HiddenVisibility :: Visibility

-- | The GV is protected
ProtectedVisibility :: Visibility
fromVisibility :: Visibility -> CUInt
toVisibility :: CUInt -> Visibility
getVisibility :: ValueRef -> IO CUInt
setVisibility :: ValueRef -> CUInt -> IO ()
isDeclaration :: ValueRef -> IO CInt
getSection :: ValueRef -> IO CString
setSection :: ValueRef -> CString -> IO ()
getAlignment :: ValueRef -> IO CUInt
setAlignment :: ValueRef -> CUInt -> IO ()
addGlobal :: ModuleRef -> TypeRef -> CString -> IO ValueRef
getNamedGlobal :: ModuleRef -> CString -> IO ValueRef
deleteGlobal :: ValueRef -> IO ()
getInitializer :: ValueRef -> IO ValueRef
setInitializer :: ValueRef -> ValueRef -> IO ()
isThreadLocal :: ValueRef -> IO CInt
setThreadLocal :: ValueRef -> CInt -> IO ()
isGlobalConstant :: ValueRef -> IO CInt
setGlobalConstant :: ValueRef -> CInt -> IO ()
getFirstGlobal :: ModuleRef -> IO ValueRef
getNextGlobal :: ValueRef -> IO ValueRef
getPreviousGlobal :: ValueRef -> IO ValueRef
getLastGlobal :: ModuleRef -> IO ValueRef
getGlobalParent :: ValueRef -> IO ModuleRef
addFunction :: ModuleRef -> CString -> TypeRef -> IO ValueRef
getNamedFunction :: ModuleRef -> CString -> IO ValueRef
deleteFunction :: ValueRef -> IO ()
countParams :: ValueRef -> CUInt
getParams :: ValueRef -> Ptr ValueRef -> IO ()
getParam :: ValueRef -> CUInt -> ValueRef
getIntrinsicID :: ValueRef -> CUInt
getGC :: ValueRef -> IO CString
setGC :: ValueRef -> CString -> IO ()
getFirstFunction :: ModuleRef -> IO ValueRef
getNextFunction :: ValueRef -> IO ValueRef
getPreviousFunction :: ValueRef -> IO ValueRef
getLastFunction :: ModuleRef -> IO ValueRef
getFirstParam :: ValueRef -> IO ValueRef
getNextParam :: ValueRef -> IO ValueRef
getPreviousParam :: ValueRef -> IO ValueRef
getLastParam :: ValueRef -> IO ValueRef
getParamParent :: ValueRef -> IO ValueRef
isTailCall :: ValueRef -> IO CInt
setTailCall :: ValueRef -> CInt -> IO ()
addIncoming :: ValueRef -> Ptr ValueRef -> Ptr ValueRef -> CUInt -> IO ()
countIncoming :: ValueRef -> IO CUInt
getIncomingValue :: ValueRef -> CUInt -> IO ValueRef
getIncomingBlock :: ValueRef -> CUInt -> IO BasicBlockRef
data CallingConvention
C :: CallingConvention
Fast :: CallingConvention
Cold :: CallingConvention
X86StdCall :: CallingConvention
X86FastCall :: CallingConvention
GHC :: CallingConvention
fromCallingConvention :: CallingConvention -> CUInt
toCallingConvention :: CUInt -> CallingConvention
getFunctionCallConv :: ValueRef -> IO CUInt
setFunctionCallConv :: ValueRef -> CUInt -> IO ()
getInstructionCallConv :: ValueRef -> IO CUInt
setInstructionCallConv :: ValueRef -> CUInt -> IO ()
constInt :: TypeRef -> CULLong -> CInt -> ValueRef
constReal :: TypeRef -> CDouble -> ValueRef
constArray :: TypeRef -> Ptr ValueRef -> CUInt -> ValueRef
constString :: CString -> CUInt -> CInt -> ValueRef
constStruct :: Ptr ValueRef -> CUInt -> CInt -> ValueRef
constVector :: Ptr ValueRef -> CUInt -> ValueRef
sizeOf :: TypeRef -> IO ValueRef
constNeg :: ValueRef -> ValueRef
constNot :: ValueRef -> ValueRef
constAdd :: ValueRef -> ValueRef -> ValueRef
constSub :: ValueRef -> ValueRef -> ValueRef
constMul :: ValueRef -> ValueRef -> ValueRef
constExactSDiv :: ValueRef -> ValueRef -> IO ValueRef
constFAdd :: ValueRef -> ValueRef -> ValueRef
constFMul :: ValueRef -> ValueRef -> ValueRef
constFNeg :: ValueRef -> ValueRef
constFPCast :: ValueRef -> TypeRef -> ValueRef
constFSub :: ValueRef -> ValueRef -> ValueRef
constUDiv :: ValueRef -> ValueRef -> ValueRef
constSDiv :: ValueRef -> ValueRef -> ValueRef
constFDiv :: ValueRef -> ValueRef -> ValueRef
constURem :: ValueRef -> ValueRef -> ValueRef
constSRem :: ValueRef -> ValueRef -> ValueRef
constFRem :: ValueRef -> ValueRef -> ValueRef
constAnd :: ValueRef -> ValueRef -> ValueRef
constOr :: ValueRef -> ValueRef -> ValueRef
constXor :: ValueRef -> ValueRef -> ValueRef
constICmp :: CInt -> ValueRef -> ValueRef -> ValueRef
constFCmp :: CInt -> ValueRef -> ValueRef -> ValueRef
constShl :: ValueRef -> ValueRef -> ValueRef
constLShr :: ValueRef -> ValueRef -> ValueRef
constAShr :: ValueRef -> ValueRef -> ValueRef
constGEP :: ValueRef -> Ptr ValueRef -> CUInt -> ValueRef
constTrunc :: ValueRef -> TypeRef -> ValueRef
constSExt :: ValueRef -> TypeRef -> ValueRef
constZExt :: ValueRef -> TypeRef -> ValueRef
constFPTrunc :: ValueRef -> TypeRef -> ValueRef
constFPExt :: ValueRef -> TypeRef -> ValueRef
constUIToFP :: ValueRef -> TypeRef -> ValueRef
constSIToFP :: ValueRef -> TypeRef -> ValueRef
constFPToUI :: ValueRef -> TypeRef -> ValueRef
constFPToSI :: ValueRef -> TypeRef -> ValueRef
constPtrToInt :: ValueRef -> TypeRef -> ValueRef
constIntToPtr :: ValueRef -> TypeRef -> ValueRef
constBitCast :: ValueRef -> TypeRef -> ValueRef
constSelect :: ValueRef -> ValueRef -> ValueRef -> ValueRef
constExtractElement :: ValueRef -> ValueRef -> ValueRef
constInsertElement :: ValueRef -> ValueRef -> ValueRef -> ValueRef
constShuffleVector :: ValueRef -> ValueRef -> ValueRef -> ValueRef
constRealOfString :: TypeRef -> CString -> IO ValueRef
constNSWMul :: ValueRef -> ValueRef -> IO ValueRef
constNSWNeg :: ValueRef -> IO ValueRef
constNSWSub :: ValueRef -> ValueRef -> IO ValueRef
constNUWAdd :: ValueRef -> ValueRef -> IO ValueRef
constNUWMul :: ValueRef -> ValueRef -> IO ValueRef
constNUWNeg :: ValueRef -> IO ValueRef
constNUWSub :: ValueRef -> ValueRef -> IO ValueRef
type BasicBlock = Value
type BasicBlockRef = Ptr BasicBlock
basicBlockAsValue :: BasicBlockRef -> ValueRef
valueIsBasicBlock :: ValueRef -> Bool
valueAsBasicBlock :: ValueRef -> BasicBlockRef
countBasicBlocks :: ValueRef -> IO CUInt
getBasicBlocks :: ValueRef -> Ptr BasicBlockRef -> IO ()
getEntryBasicBlock :: ValueRef -> IO BasicBlockRef
appendBasicBlock :: ValueRef -> CString -> IO BasicBlockRef
insertBasicBlock :: BasicBlockRef -> CString -> IO BasicBlockRef
deleteBasicBlock :: BasicBlockRef -> IO ()
getFirstBasicBlock :: ValueRef -> IO BasicBlockRef
getNextBasicBlock :: BasicBlockRef -> IO BasicBlockRef
getPreviousBasicBlock :: BasicBlockRef -> IO BasicBlockRef
getLastBasicBlock :: ValueRef -> IO BasicBlockRef
getInsertBlock :: BuilderRef -> IO BasicBlockRef
getBasicBlockParent :: BasicBlockRef -> IO ValueRef
instGetOpcode :: ValueRef -> IO Int
cmpInstGetPredicate :: ValueRef -> IO Int
data Builder
type BuilderRef = Ptr Builder
createBuilder :: IO BuilderRef
ptrDisposeBuilder :: FunPtr (BuilderRef -> IO ())
positionBuilder :: BuilderRef -> BasicBlockRef -> ValueRef -> IO ()
positionBefore :: BuilderRef -> ValueRef -> IO ()
positionAtEnd :: BuilderRef -> BasicBlockRef -> IO ()
getFirstInstruction :: BasicBlockRef -> IO ValueRef
getNextInstruction :: ValueRef -> IO ValueRef
getPreviousInstruction :: ValueRef -> IO ValueRef
getLastInstruction :: BasicBlockRef -> IO ValueRef
getInstructionParent :: ValueRef -> IO BasicBlockRef
buildRetVoid :: BuilderRef -> IO ValueRef
buildRet :: BuilderRef -> ValueRef -> IO ValueRef
buildBr :: BuilderRef -> BasicBlockRef -> IO ValueRef
buildIndirectBr :: BuilderRef -> ValueRef -> CUInt -> IO ValueRef
buildCondBr :: BuilderRef -> ValueRef -> BasicBlockRef -> BasicBlockRef -> IO ValueRef
buildSwitch :: BuilderRef -> ValueRef -> BasicBlockRef -> CUInt -> IO ValueRef
buildInvoke :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> BasicBlockRef -> BasicBlockRef -> CString -> IO ValueRef
buildUnreachable :: BuilderRef -> IO ValueRef
buildLandingPad :: BuilderRef -> TypeRef -> ValueRef -> CUInt -> CString -> IO ValueRef
addClause :: ValueRef -> ValueRef -> IO ()
setCleanup :: ValueRef -> CUInt -> IO ()
buildAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFPCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildFSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildUDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildSDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildExactSDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFDiv :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildURem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildSRem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFRem :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildShl :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildLShr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildAShr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildAnd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildOr :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildXor :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildFNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildNot :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildNSWMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildNSWNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildNSWSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildNUWAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildNUWMul :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildNUWNeg :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildNUWSub :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildMalloc :: BuilderRef -> TypeRef -> CString -> IO ValueRef
buildArrayMalloc :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef
buildAlloca :: BuilderRef -> TypeRef -> CString -> IO ValueRef
buildArrayAlloca :: BuilderRef -> TypeRef -> ValueRef -> CString -> IO ValueRef
buildFree :: BuilderRef -> ValueRef -> IO ValueRef
buildLoad :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildStore :: BuilderRef -> ValueRef -> ValueRef -> IO ValueRef
buildGEP :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef
buildTrunc :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildZExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildSExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildFPToUI :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildFPToSI :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildUIToFP :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildSIToFP :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildFPTrunc :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildFPExt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildPtrToInt :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildIntToPtr :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildPointerCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildTruncOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildZExtOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildSExtOrBitCast :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildPtrDiff :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildAggregateRet :: BuilderRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef
buildGlobalString :: BuilderRef -> CString -> CString -> IO ValueRef
buildGlobalStringPtr :: BuilderRef -> CString -> CString -> IO ValueRef
buildInBoundsGEP :: BuilderRef -> ValueRef -> (Ptr ValueRef) -> CUInt -> CString -> IO ValueRef
buildIsNotNull :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildIsNull :: BuilderRef -> ValueRef -> CString -> IO ValueRef
buildNSWAdd :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildStructGEP :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef
buildICmp :: BuilderRef -> CInt -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildFCmp :: BuilderRef -> CInt -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildPhi :: BuilderRef -> TypeRef -> CString -> IO ValueRef
buildCall :: BuilderRef -> ValueRef -> Ptr ValueRef -> CUInt -> CString -> IO ValueRef
buildSelect :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildVAArg :: BuilderRef -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildExtractElement :: BuilderRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildInsertElement :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
buildShuffleVector :: BuilderRef -> ValueRef -> ValueRef -> ValueRef -> CString -> IO ValueRef
addCase :: ValueRef -> ValueRef -> BasicBlockRef -> IO ()
data MemoryBuffer
type MemoryBufferRef = Ptr MemoryBuffer
createMemoryBufferWithContentsOfFile :: CString -> Ptr MemoryBufferRef -> Ptr CString -> IO CInt
createMemoryBufferWithSTDIN :: Ptr MemoryBufferRef -> Ptr CString -> IO CInt
disposeMemoryBuffer :: MemoryBufferRef -> IO ()
disposeMessage :: CString -> IO ()
addAttribute :: ValueRef -> CAttribute -> IO ()
setInstrParamAlignment :: ValueRef -> CUInt -> CUInt -> IO ()
setParamAlignment :: ValueRef -> CUInt -> IO ()
data Attribute
ZExtAttribute :: Attribute
SExtAttribute :: Attribute
NoReturnAttribute :: Attribute
InRegAttribute :: Attribute
StructRetAttribute :: Attribute
NoUnwindAttribute :: Attribute
NoAliasAttribute :: Attribute
ByValAttribute :: Attribute
NestAttribute :: Attribute
ReadNoneAttribute :: Attribute
ReadOnlyAttribute :: Attribute
NoInlineAttribute :: Attribute
AlwaysInlineAttribute :: Attribute
OptimizeForSizeAttribute :: Attribute
StackProtectAttribute :: Attribute
StackProtectReqAttribute :: Attribute
NoCaptureAttribute :: Attribute
NoRedZoneAttribute :: Attribute
NoImplicitFloatAttribute :: Attribute
NakedAttribute :: Attribute
fromAttribute :: Attribute -> CAttribute
toAttribute :: CAttribute -> Attribute
addInstrAttribute :: ValueRef -> CUInt -> CAttribute -> IO ()
removeFunctionAttr :: ValueRef -> CAttribute -> IO ()
removeAttribute :: ValueRef -> CAttribute -> IO ()
removeInstrAttribute :: ValueRef -> CUInt -> CAttribute -> IO ()
addFunctionAttr :: ValueRef -> CAttribute -> IO ()
data PassManager
type PassManagerRef = Ptr PassManager
createFunctionPassManager :: ModuleProviderRef -> IO PassManagerRef
createPassManager :: IO PassManagerRef
disposePassManager :: PassManagerRef -> IO ()
ptrDisposePassManager :: FunPtr (PassManagerRef -> IO ())
finalizeFunctionPassManager :: PassManagerRef -> IO CInt
initializeFunctionPassManager :: PassManagerRef -> IO CInt
runFunctionPassManager :: PassManagerRef -> ValueRef -> IO CInt
runPassManager :: PassManagerRef -> ModuleRef -> IO CInt
data Context
type ContextRef = Ptr Context
dumpModule :: ModuleRef -> IO ()
alignOf :: TypeRef -> IO ValueRef
constInBoundsGEP :: ValueRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef
constIntCast :: ValueRef -> TypeRef -> CUInt -> IO ValueRef
constIntOfString :: TypeRef -> CString -> CUInt -> IO ValueRef
constIntOfStringAndSize :: TypeRef -> CString -> CUInt -> CUInt -> IO ValueRef
constNSWAdd :: ValueRef -> ValueRef -> IO ValueRef
constPointerCast :: ValueRef -> TypeRef -> IO ValueRef
constPointerNull :: TypeRef -> IO ValueRef
constRealOfStringAndSize :: TypeRef -> CString -> CUInt -> IO ValueRef
constSExtOrBitCast :: ValueRef -> TypeRef -> IO ValueRef
getTypeByName :: ModuleRef -> CString -> IO TypeRef
insertIntoBuilderWithName :: BuilderRef -> ValueRef -> CString -> IO ()
moduleCreateWithNameInContext :: CString -> ContextRef -> IO ModuleRef
appendBasicBlockInContext :: ContextRef -> ValueRef -> CString -> IO BasicBlockRef
insertBasicBlockInContext :: ContextRef -> BasicBlockRef -> CString -> IO BasicBlockRef
createBuilderInContext :: ContextRef -> IO BuilderRef
contextDispose :: ContextRef -> IO ()
constStringInContext :: ContextRef -> CString -> CUInt -> CInt -> IO ValueRef
constStructInContext :: ContextRef -> (Ptr ValueRef) -> CUInt -> CInt -> IO ValueRef
constTruncOrBitCast :: ValueRef -> TypeRef -> IO ValueRef
constZExtOrBitCast :: ValueRef -> TypeRef -> IO ValueRef
doubleTypeInContext :: ContextRef -> IO TypeRef
fP128TypeInContext :: ContextRef -> IO TypeRef
floatTypeInContext :: ContextRef -> IO TypeRef
int16TypeInContext :: ContextRef -> IO TypeRef
int1TypeInContext :: ContextRef -> IO TypeRef
int32TypeInContext :: ContextRef -> IO TypeRef
int64TypeInContext :: ContextRef -> IO TypeRef
int8TypeInContext :: ContextRef -> IO TypeRef
intTypeInContext :: ContextRef -> CUInt -> IO TypeRef
labelTypeInContext :: ContextRef -> IO TypeRef
pPCFP128TypeInContext :: ContextRef -> IO TypeRef
structTypeInContext :: ContextRef -> (Ptr TypeRef) -> CUInt -> CInt -> IO TypeRef
voidTypeInContext :: ContextRef -> IO TypeRef
x86FP80TypeInContext :: ContextRef -> IO TypeRef
getTypeContext :: TypeRef -> IO ContextRef
addAlias :: ModuleRef -> TypeRef -> ValueRef -> CString -> IO ValueRef
addDestination :: ValueRef -> BasicBlockRef -> IO ()
addGlobalInAddressSpace :: ModuleRef -> TypeRef -> CString -> CUInt -> IO ValueRef
blockAddress :: ValueRef -> BasicBlockRef -> IO ValueRef
clearInsertionPosition :: BuilderRef -> IO ()
constExtractValue :: ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef
constInlineAsm :: TypeRef -> CString -> CString -> Bool -> Bool -> IO ValueRef
constInsertValue :: ValueRef -> ValueRef -> Ptr CUInt -> CUInt -> IO ValueRef
constIntGetSExtValue :: ValueRef -> IO CLLong
constIntGetZExtValue :: ValueRef -> IO CULLong
contextCreate :: IO ContextRef
createFunctionPassManagerForModule :: ModuleRef -> IO PassManagerRef
getAttribute :: ValueRef -> IO CUInt
getCurrentDebugLocation :: BuilderRef -> IO ValueRef
getFunctionAttr :: ValueRef -> IO CUInt
getGlobalContext :: IO ContextRef
getMDKindID :: CString -> CUInt -> IO CUInt
getMDKindIDInContext :: ContextRef -> CString -> CUInt -> IO CUInt
getMetadata :: ValueRef -> CUInt -> IO ValueRef
getOperand :: ValueRef -> CUInt -> IO ValueRef
getNumOperands :: ValueRef -> IO CUInt
hasMetadata :: ValueRef -> IO CInt
insertIntoBuilder :: BuilderRef -> ValueRef -> IO ()
mDNode :: (Ptr ValueRef) -> CUInt -> IO ValueRef
mDNodeInContext :: ContextRef -> (Ptr ValueRef) -> CUInt -> IO ValueRef
mDString :: CString -> CUInt -> IO ValueRef
mDStringInContext :: ContextRef -> CString -> CUInt -> IO ValueRef
replaceAllUsesWith :: ValueRef -> ValueRef -> IO ()
setCurrentDebugLocation :: BuilderRef -> ValueRef -> IO ()
setInstDebugLocation :: BuilderRef -> ValueRef -> IO ()
setMetadata :: ValueRef -> CUInt -> ValueRef -> IO ()
buildBinOp :: BuilderRef -> CUInt -> ValueRef -> ValueRef -> CString -> IO ValueRef
getConstOpcode :: ValueRef -> IO CUInt
buildCast :: BuilderRef -> CUInt -> ValueRef -> TypeRef -> CString -> IO ValueRef
buildExtractValue :: BuilderRef -> ValueRef -> CUInt -> CString -> IO ValueRef
buildInsertValue :: BuilderRef -> ValueRef -> ValueRef -> CUInt -> CString -> IO ValueRef
data OpaqueUse
type UseRef = Ptr OpaqueUse
getFirstUse :: ValueRef -> IO UseRef
getNextUse :: UseRef -> IO UseRef
getNumUses :: ValueRef -> IO CUInt
getUsedValue :: UseRef -> IO ValueRef
getUser :: UseRef -> IO ValueRef
isUsedInBasicBlock :: BasicBlockRef -> ValueRef -> IO CInt
instance Typeable Module
instance Typeable ModuleProvider
instance Typeable Type
instance Typeable Value
instance Typeable CallingConvention
instance Typeable Linkage
instance Typeable Builder
instance Typeable MemoryBuffer
instance Typeable TypeKind
instance Typeable Attribute
instance Typeable PassManager
instance Typeable OpaqueUse
instance Typeable Context
instance Show CallingConvention
instance Eq CallingConvention
instance Ord CallingConvention
instance Enum CallingConvention
instance Bounded CallingConvention
instance Show Linkage
instance Eq Linkage
instance Ord Linkage
instance Enum Linkage
instance Show Visibility
instance Eq Visibility
instance Ord Visibility
instance Enum Visibility
instance Eq TypeKind
instance Ord TypeKind
instance Enum TypeKind
instance Bounded TypeKind
instance Show TypeKind
instance Read TypeKind
instance Show Attribute
instance Eq Attribute
instance Ord Attribute
instance Enum Attribute
instance Bounded Attribute

module LLVM.FFI.BitReader
getBitcodeModuleProvider :: MemoryBufferRef -> (Ptr ModuleProviderRef) -> (Ptr CString) -> IO CInt
parseBitcode :: MemoryBufferRef -> (Ptr ModuleRef) -> (Ptr CString) -> IO CInt
getBitcodeModuleProviderInContext :: ContextRef -> MemoryBufferRef -> (Ptr ModuleProviderRef) -> (Ptr CString) -> IO CInt
parseBitcodeInContext :: ContextRef -> MemoryBufferRef -> (Ptr ModuleRef) -> (Ptr CString) -> IO CInt
getBitcodeModule :: MemoryBufferRef -> (Ptr ModuleRef) -> (Ptr CString) -> IO Bool
getBitcodeModuleInContext :: ContextRef -> MemoryBufferRef -> (Ptr ModuleRef) -> (Ptr CString) -> IO Bool

module LLVM.FFI.BitWriter
writeBitcodeToFile :: ModuleRef -> CString -> IO CInt
writeBitcodeToFileHandle :: ModuleRef -> CInt -> IO CInt
writeBitcodeToFD :: ModuleRef -> CInt -> CInt -> CInt -> IO CInt

module LLVM.FFI.Target
type ByteOrdering = CInt
data TargetData
type TargetDataRef = Ptr TargetData
aBIAlignmentOfType :: TargetDataRef -> TypeRef -> CUInt
aBISizeOfType :: TargetDataRef -> TypeRef -> CULLong
addTargetData :: TargetDataRef -> PassManagerRef -> IO ()
byteOrder :: TargetDataRef -> ByteOrdering
callFrameAlignmentOfType :: TargetDataRef -> TypeRef -> CUInt
copyStringRepOfTargetData :: TargetDataRef -> IO CString
createTargetData :: CString -> IO TargetDataRef
disposeTargetData :: TargetDataRef -> IO ()
elementAtOffset :: TargetDataRef -> TypeRef -> CULLong -> CUInt
intPtrType :: TargetDataRef -> TypeRef
offsetOfElement :: TargetDataRef -> TypeRef -> CUInt -> CULLong
pointerSize :: TargetDataRef -> CUInt
preferredAlignmentOfGlobal :: TargetDataRef -> ValueRef -> CUInt
preferredAlignmentOfType :: TargetDataRef -> TypeRef -> CUInt
sizeOfTypeInBits :: TargetDataRef -> TypeRef -> CULLong
storeSizeOfType :: TargetDataRef -> TypeRef -> CULLong
instance Typeable TargetData

module LLVM.FFI.ExecutionEngine
data ExecutionEngine
createExecutionEngine :: Ptr ExecutionEngineRef -> ModuleProviderRef -> Ptr CString -> IO CInt
ptrDisposeExecutionEngine :: FunPtr (ExecutionEngineRef -> IO ())
createInterpreter :: Ptr ExecutionEngineRef -> ModuleProviderRef -> Ptr CString -> IO CInt
createJITCompiler :: Ptr ExecutionEngineRef -> ModuleProviderRef -> CUInt -> Ptr CString -> IO CInt
addModuleProvider :: ExecutionEngineRef -> ModuleProviderRef -> IO ()
removeModuleProvider :: ExecutionEngineRef -> ModuleProviderRef -> Ptr ModuleRef -> Ptr CString -> IO CInt
findFunction :: ExecutionEngineRef -> CString -> Ptr ValueRef -> IO CInt
freeMachineCodeForFunction :: ExecutionEngineRef -> ValueRef -> IO ()
runStaticConstructors :: ExecutionEngineRef -> IO ()
runStaticDestructors :: ExecutionEngineRef -> IO ()
runFunction :: ExecutionEngineRef -> ValueRef -> CUInt -> Ptr GenericValueRef -> IO GenericValueRef
runFunctionAsMain :: ExecutionEngineRef -> ValueRef -> CUInt -> Ptr CString -> Ptr CString -> IO CInt
getExecutionEngineTargetData :: ExecutionEngineRef -> IO TargetDataRef
addGlobalMapping :: ExecutionEngineRef -> ValueRef -> Ptr () -> IO ()
getPointerToGlobal :: ExecutionEngineRef -> ValueRef -> IO (FunPtr a)
addModule :: ExecutionEngineRef -> ModuleRef -> IO ()
createExecutionEngineForModule :: (Ptr ExecutionEngineRef) -> ModuleRef -> (Ptr CString) -> IO Bool
createInterpreterForModule :: (Ptr ExecutionEngineRef) -> ModuleRef -> (Ptr CString) -> IO Bool
createJITCompilerForModule :: (Ptr ExecutionEngineRef) -> ModuleRef -> CUInt -> (Ptr CString) -> IO Bool
disposeExecutionEngine :: ExecutionEngineRef -> IO ()
removeModule :: ExecutionEngineRef -> ModuleRef -> (Ptr ModuleRef) -> (Ptr CString) -> IO Bool
data GenericValue
type GenericValueRef = Ptr GenericValue
createGenericValueOfInt :: TypeRef -> CULLong -> CInt -> IO GenericValueRef
genericValueToInt :: GenericValueRef -> CInt -> CULLong
genericValueIntWidth :: GenericValueRef -> IO CUInt
createGenericValueOfFloat :: TypeRef -> CDouble -> IO GenericValueRef
genericValueToFloat :: TypeRef -> GenericValueRef -> CDouble
createGenericValueOfPointer :: Ptr a -> IO GenericValueRef
genericValueToPointer :: GenericValueRef -> IO (Ptr a)
ptrDisposeGenericValue :: FunPtr (GenericValueRef -> IO ())
linkInJIT :: IO ()
instance Typeable ExecutionEngine
instance Typeable GenericValue

module LLVM.FFI.Support
createStandardModulePasses :: PassManagerRef -> CUInt -> CInt -> CInt -> CInt -> CInt -> CInt -> CInt -> IO ()
createStandardFunctionPasses :: PassManagerRef -> CUInt -> IO ()

module LLVM.FFI.Transforms.IPO
addArgumentPromotionPass :: PassManagerRef -> IO ()
addConstantMergePass :: PassManagerRef -> IO ()
addDeadArgEliminationPass :: PassManagerRef -> IO ()
addDeadTypeEliminationPass :: PassManagerRef -> IO ()
addFunctionAttrsPass :: PassManagerRef -> IO ()
addFunctionInliningPass :: PassManagerRef -> IO ()
addGlobalDCEPass :: PassManagerRef -> IO ()
addGlobalOptimizerPass :: PassManagerRef -> IO ()
addIPConstantPropagationPass :: PassManagerRef -> IO ()
addPruneEHPass :: PassManagerRef -> IO ()
addIPSCCPPass :: PassManagerRef -> IO ()
addRaiseAllocationsPass :: PassManagerRef -> IO ()
addStripDeadPrototypesPass :: PassManagerRef -> IO ()
addStripSymbolsPass :: PassManagerRef -> IO ()

module LLVM.FFI.Transforms.Scalar
addCFGSimplificationPass :: PassManagerRef -> IO ()
addConstantPropagationPass :: PassManagerRef -> IO ()
addDemoteMemoryToRegisterPass :: PassManagerRef -> IO ()
addGVNPass :: PassManagerRef -> IO ()
addInstructionCombiningPass :: PassManagerRef -> IO ()
addPromoteMemoryToRegisterPass :: PassManagerRef -> IO ()
addReassociatePass :: PassManagerRef -> IO ()
addAggressiveDCEPass :: PassManagerRef -> IO ()
addDeadStoreEliminationPass :: PassManagerRef -> IO ()
addIndVarSimplifyPass :: PassManagerRef -> IO ()
addJumpThreadingPass :: PassManagerRef -> IO ()
addLICMPass :: PassManagerRef -> IO ()
addLoopDeletionPass :: PassManagerRef -> IO ()
addLoopRotatePass :: PassManagerRef -> IO ()
addLoopUnrollPass :: PassManagerRef -> IO ()
addLoopUnswitchPass :: PassManagerRef -> IO ()
addMemCpyOptPass :: PassManagerRef -> IO ()
addSCCPPass :: PassManagerRef -> IO ()
addScalarReplAggregatesPass :: PassManagerRef -> IO ()
addSimplifyLibCallsPass :: PassManagerRef -> IO ()
addTailCallEliminationPass :: PassManagerRef -> IO ()
addVerifierPass :: PassManagerRef -> IO ()

module LLVM.FFI.Analysis
type VerifierFailureAction = CInt
verifyFunction :: ValueRef -> VerifierFailureAction -> IO CInt
verifyModule :: ModuleRef -> VerifierFailureAction -> (Ptr CString) -> IO CInt
viewFunctionCFG :: ValueRef -> IO ()
viewFunctionCFGOnly :: ValueRef -> IO ()
