{-# LANGUAGE
ForeignFunctionInterface,
GeneralizedNewtypeDeriving
#-}
module LLVM.Internal.FFI.Target where
import LLVM.Prelude
import Foreign.Ptr
import Foreign.C
import LLVM.Internal.FFI.DataLayout
import LLVM.Internal.FFI.LLVMCTypes
import LLVM.Internal.FFI.MemoryBuffer
import LLVM.Internal.FFI.Module
import LLVM.Internal.FFI.PtrHierarchy
data Target
foreign import ccall unsafe "LLVM_Hs_InitializeNativeTarget" initializeNativeTarget ::
IO LLVMBool
foreign import ccall unsafe "LLVM_Hs_LookupTarget" lookupTarget ::
CString -> CString -> Ptr (OwnerTransfered CString) -> Ptr (OwnerTransfered CString) -> IO (Ptr Target)
data TargetOptions
data MCTargetOptions
foreign import ccall unsafe "LLVM_Hs_CreateTargetOptions" createTargetOptions ::
IO (Ptr TargetOptions)
foreign import ccall unsafe "LLVM_Hs_SetTargetOptionFlag" setTargetOptionFlag ::
Ptr TargetOptions -> TargetOptionFlag -> LLVMBool -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetTargetOptionFlag" getTargetOptionsFlag ::
Ptr TargetOptions -> TargetOptionFlag -> IO LLVMBool
foreign import ccall unsafe "LLVM_Hs_SetMCTargetOptionFlag" setMCTargetOptionFlag ::
Ptr MCTargetOptions -> MCTargetOptionFlag -> LLVMBool -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetMCTargetOptionFlag" getMCTargetOptionsFlag ::
Ptr MCTargetOptions -> MCTargetOptionFlag -> IO LLVMBool
foreign import ccall unsafe "LLVM_Hs_GetCompressDebugSections" getCompressDebugSections ::
Ptr TargetOptions -> IO DebugCompressionType
foreign import ccall unsafe "LLVM_Hs_SetCompressDebugSections" setCompressDebugSections ::
Ptr TargetOptions -> DebugCompressionType -> IO ()
foreign import ccall unsafe "LLVM_Hs_SetStackAlignmentOverride" setStackAlignmentOverride ::
Ptr TargetOptions -> CUInt -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetStackAlignmentOverride" getStackAlignmentOverride ::
Ptr TargetOptions -> IO CUInt
foreign import ccall unsafe "LLVM_Hs_SetFloatABIType" setFloatABIType ::
Ptr TargetOptions -> FloatABIType -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetFloatABIType" getFloatABIType ::
Ptr TargetOptions -> IO FloatABIType
foreign import ccall unsafe "LLVM_Hs_SetAllowFPOpFusion" setAllowFPOpFusion ::
Ptr TargetOptions -> FPOpFusionMode -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetAllowFPOpFusion" getAllowFPOpFusion ::
Ptr TargetOptions -> IO FPOpFusionMode
foreign import ccall unsafe "LLVM_Hs_SetThreadModel" setThreadModel ::
Ptr TargetOptions -> ThreadModel -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetThreadModel" getThreadModel ::
Ptr TargetOptions -> IO ThreadModel
foreign import ccall unsafe "LLVM_Hs_SetEABIVersion" setEABIVersion ::
Ptr TargetOptions -> EABI -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetEABIVersion" getEABIVersion ::
Ptr TargetOptions -> IO EABI
foreign import ccall unsafe "LLVM_Hs_SetDebuggerTuning" setDebuggerTuning ::
Ptr TargetOptions -> DebuggerKind -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetDebuggerTuning" getDebuggerTuning ::
Ptr TargetOptions -> IO DebuggerKind
foreign import ccall unsafe "LLVM_Hs_SetFPDenormalMode" setFPDenormalMode ::
Ptr TargetOptions -> FPDenormalMode -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetFPDenormalMode" getFPDenormalMode ::
Ptr TargetOptions -> IO FPDenormalMode
foreign import ccall unsafe "LLVM_Hs_SetExceptionModel" setExceptionModel ::
Ptr TargetOptions -> ExceptionHandling -> IO ()
foreign import ccall unsafe "LLVM_Hs_GetExceptionModel" getExceptionModel ::
Ptr TargetOptions -> IO ExceptionHandling
foreign import ccall unsafe "LLVM_Hs_DisposeTargetOptions" disposeTargetOptions ::
Ptr TargetOptions -> IO ()
data TargetMachine
foreign import ccall unsafe "LLVM_Hs_CreateTargetMachine" createTargetMachine ::
Ptr Target
-> CString
-> CString
-> CString
-> Ptr TargetOptions
-> RelocModel
-> CodeModel
-> CodeGenOptLevel
-> IO (Ptr TargetMachine)
foreign import ccall unsafe "LLVMDisposeTargetMachine" disposeTargetMachine ::
Ptr TargetMachine -> IO ()
foreign import ccall unsafe "LLVM_Hs_TargetMachineOptions" targetMachineOptions ::
Ptr TargetMachine -> IO (Ptr TargetOptions)
foreign import ccall unsafe "LLVM_Hs_MCTargetOptions" machineCodeOptions ::
Ptr TargetOptions -> IO (Ptr MCTargetOptions)
foreign import ccall unsafe "LLVM_Hs_TargetMachineEmit" targetMachineEmit ::
Ptr TargetMachine
-> Ptr Module
-> Ptr RawPWriteStream
-> CodeGenFileType
-> Ptr (OwnerTransfered CString)
-> IO LLVMBool
foreign import ccall unsafe "LLVMTargetMachineEmitToFile" targetMachineEmitToFile ::
Ptr TargetMachine
-> Ptr Module
-> CString
-> CodeGenFileType
-> Ptr (OwnerTransfered CString)
-> IO LLVMBool
foreign import ccall unsafe "LLVMTargetMachineEmitToMemoryBuffer" targetMachineEmitToMemoryBuffer ::
Ptr TargetMachine
-> Ptr Module
-> CodeGenFileType
-> Ptr (OwnerTransfered CString)
-> Ptr (Ptr MemoryBuffer)
-> IO LLVMBool
data TargetLowering
foreign import ccall unsafe "LLVMGetTargetMachineTriple" getTargetMachineTriple ::
Ptr TargetMachine -> IO (OwnerTransfered CString)
foreign import ccall unsafe "LLVM_Hs_GetDefaultTargetTriple" getDefaultTargetTriple ::
IO (OwnerTransfered CString)
foreign import ccall unsafe "LLVM_Hs_GetProcessTargetTriple" getProcessTargetTriple ::
IO (OwnerTransfered CString)
foreign import ccall unsafe "LLVM_Hs_GetHostCPUName" getHostCPUName ::
Ptr CSize -> IO CString
foreign import ccall unsafe "LLVM_Hs_GetHostCPUFeatures" getHostCPUFeatures ::
IO (OwnerTransfered CString)
foreign import ccall unsafe "LLVM_Hs_GetTargetMachineDataLayout" getTargetMachineDataLayout ::
Ptr TargetMachine -> IO (OwnerTransfered CString)
data TargetLibraryInfo
foreign import ccall unsafe "LLVM_Hs_CreateTargetLibraryInfo" createTargetLibraryInfo ::
CString -> IO (Ptr TargetLibraryInfo)
foreign import ccall unsafe "LLVM_Hs_GetLibFunc" getLibFunc ::
Ptr TargetLibraryInfo -> CString -> Ptr LibFunc -> IO LLVMBool
foreign import ccall unsafe "LLVM_Hs_LibFuncGetName" libFuncGetName ::
Ptr TargetLibraryInfo -> LibFunc -> Ptr CSize -> IO CString
foreign import ccall unsafe "LLVM_Hs_LibFuncSetAvailableWithName" libFuncSetAvailableWithName ::
Ptr TargetLibraryInfo -> LibFunc -> CString -> IO ()
foreign import ccall unsafe "LLVM_Hs_DisposeTargetLibraryInfo" disposeTargetLibraryInfo ::
Ptr TargetLibraryInfo -> IO ()
foreign import ccall unsafe "LLVM_Hs_InitializeAllTargets" initializeAllTargets :: IO ()
foreign import ccall unsafe "LLVMCreateTargetDataLayout" createTargetDataLayout ::
Ptr TargetMachine -> IO (Ptr DataLayout)