! Copyright (C) 2009 Matthew Willis, 2017 Björn Lindqvist ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.libraries alien.syntax combinators kernel ldcache system ; IN: llvm.ffi << "llvm" { { [ os linux? ] [ "LLVM-3.9" find-so [ cdecl add-library ] [ drop ] if* ] } [ drop ] } cond >> LIBRARY: llvm CONSTANT: LLVMAbortProcessAction 0 CONSTANT: LLVMPrintMessageAction 1 CONSTANT: LLVMReturnStatusAction 2 TYPEDEF: uint unsigned TYPEDEF: unsigned enum TYPEDEF: int LLVMBool ! Reference types TYPEDEF: void* LLVMExecutionEngineRef TYPEDEF: void* LLVMModuleRef TYPEDEF: void* LLVMPassManagerRef TYPEDEF: void* LLVMModuleProviderRef TYPEDEF: void* LLVMTypeRef TYPEDEF: void* LLVMValueRef TYPEDEF: void* LLVMBasicBlockRef TYPEDEF: void* LLVMBuilderRef TYPEDEF: void* LLVMMemoryBufferRef TYPEDEF: void* LLVMTargetRef TYPEDEF: void* LLVMPassRegistryRef ! Type types ENUM: LLVMTypeKind LLVMVoidTypeKind LLVMHalfTypeKind LLVMFloatTypeKind LLVMDoubleTypeKind LLVMX86_FP80TypeKind LLVMFP128TypeKind LLVMPPC_FP128TypeKind LLVMLabelTypeKind LLVMIntegerTypeKind LLVMFunctionTypeKind LLVMStructTypeKind LLVMArrayTypeKind LLVMPointerTypeKind LLVMVectorTypeKind LLVMMetadataTypeKind LLVMX86_MMXTypeKind LLVMTokenTypeKind ; ! Modules FUNCTION: LLVMModuleRef LLVMModuleCreateWithName ( c-string ModuleID ) FUNCTION: void LLVMDisposeModule ( LLVMModuleRef M ) FUNCTION: void LLVMDumpModule ( LLVMModuleRef M ) FUNCTION: LLVMBool LLVMVerifyModule ( LLVMModuleRef M, int Action, char **OutMessage ) FUNCTION: c-string LLVMGetTarget ( LLVMModuleRef M ) ! Types ! ! Basic types FUNCTION: LLVMTypeRef LLVMFloatType ( ) FUNCTION: LLVMTypeRef LLVMDoubleType ( ) FUNCTION: LLVMTypeRef LLVMX86FP80Type ( ) FUNCTION: LLVMTypeRef LLVMFP128Type ( ) FUNCTION: LLVMTypeRef LLVMPPCFP128Type ( ) FUNCTION: LLVMTypeRef LLVMVoidType ( ) FUNCTION: LLVMTypeRef LLVMLabelType ( ) ! ! Integer type FUNCTION: LLVMTypeRef LLVMInt1Type ( ) FUNCTION: LLVMTypeRef LLVMInt8Type ( ) FUNCTION: LLVMTypeRef LLVMInt16Type ( ) FUNCTION: LLVMTypeRef LLVMInt32Type ( ) FUNCTION: LLVMTypeRef LLVMInt64Type ( ) FUNCTION: LLVMTypeRef LLVMIntType ( unsigned NumBits ) FUNCTION: unsigned LLVMGetIntTypeWidth ( LLVMTypeRef IntegerTy ) ! ! Array type FUNCTION: LLVMTypeRef LLVMArrayType ( LLVMTypeRef ElementType, unsigned ElementCount ) FUNCTION: unsigned LLVMGetArrayLength ( LLVMTypeRef ArrayTy ) ! ! Pointer type FUNCTION: LLVMTypeRef LLVMPointerType ( LLVMTypeRef ElementType, unsigned AddressSpace ) ! ! Vector type FUNCTION: LLVMTypeRef LLVMVectorType ( LLVMTypeRef ElementType, unsigned ElementCount ) FUNCTION: unsigned LLVMGetVectorSize ( LLVMTypeRef VectorTy ) ! ! Function type FUNCTION: LLVMTypeRef LLVMFunctionType ( LLVMTypeRef ReturnType, LLVMTypeRef* ParamTypes, unsigned ParamCount, int IsVarArg ) FUNCTION: LLVMTypeRef LLVMGetReturnType ( LLVMTypeRef FunctionTy ) FUNCTION: int LLVMIsFunctionVarArg ( LLVMTypeRef FunctionTy ) FUNCTION: unsigned LLVMCountParamTypes ( LLVMTypeRef FunctionTy ) FUNCTION: void LLVMGetParamTypes ( LLVMTypeRef FunctionTy, LLVMTypeRef* Dest ) ! ! Struct type FUNCTION: LLVMTypeRef LLVMStructType ( LLVMTypeRef* ElementTypes, unsigned ElementCount, int Packed ) FUNCTION: int LLVMIsPackedStruct ( LLVMTypeRef StructTy ) FUNCTION: unsigned LLVMCountStructElementTypes ( LLVMTypeRef StructTy ) FUNCTION: void LLVMGetStructElementTypes ( LLVMTypeRef StructTy, LLVMTypeRef* Dest ) ! ! Type util FUNCTION: LLVMTypeKind LLVMGetTypeKind ( LLVMTypeRef Ty ) FUNCTION: LLVMTypeRef LLVMGetElementType ( LLVMTypeRef Ty ) ! Values FUNCTION: LLVMValueRef LLVMAddFunction ( LLVMModuleRef M, c-string Name, LLVMTypeRef FunctionTy ) FUNCTION: LLVMValueRef LLVMGetParam ( LLVMValueRef Fn, unsigned index ) FUNCTION: c-string LLVMGetValueName ( LLVMValueRef Val ) FUNCTION: unsigned LLVMCountParams ( LLVMValueRef Fn ) FUNCTION: LLVMTypeRef LLVMTypeOf ( LLVMValueRef Val ) FUNCTION: void LLVMDumpValue ( LLVMValueRef Val ) ! Basic blocks FUNCTION: LLVMBasicBlockRef LLVMAppendBasicBlock ( LLVMValueRef Fn, c-string Name ) ! Builders FUNCTION: LLVMBuilderRef LLVMCreateBuilder ( ) FUNCTION: void LLVMDisposeBuilder ( LLVMBuilderRef Builder ) FUNCTION: void LLVMPositionBuilderBefore ( LLVMBuilderRef Builder, LLVMValueRef Instr ) FUNCTION: void LLVMPositionBuilderAtEnd ( LLVMBuilderRef Builder, LLVMBasicBlockRef Block ) FUNCTION: LLVMValueRef LLVMBuildAdd ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) FUNCTION: LLVMValueRef LLVMBuildSub ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) FUNCTION: LLVMValueRef LLVMBuildMul ( LLVMBuilderRef Builder, LLVMValueRef LHS, LLVMValueRef RHS, c-string Name ) FUNCTION: LLVMValueRef LLVMBuildRet ( LLVMBuilderRef Builder, LLVMValueRef V ) ! Execution Engines FUNCTION: LLVMBool LLVMCreateExecutionEngineForModule ( LLVMExecutionEngineRef* OutEE, LLVMModuleRef M, char **OutMessage ) FUNCTION: void LLVMDisposeExecutionEngine ( LLVMExecutionEngineRef E ) FUNCTION: uint64_t LLVMGetGlobalValueAddress ( LLVMExecutionEngineRef E, c-string name ) FUNCTION: LLVMBool LLVMFindFunction ( LLVMExecutionEngineRef E, c-string name, LLVMValueRef OutFn ) FUNCTION: void* LLVMGetPointerToGlobal ( LLVMExecutionEngineRef EE, LLVMValueRef Global ) ! Memory buffers FUNCTION: LLVMBool LLVMCreateMemoryBufferWithContentsOfFile ( c-string Path, LLVMMemoryBufferRef* OutMemBuf, c-string* OutMessage ) FUNCTION: void LLVMDisposeMemoryBuffer ( LLVMMemoryBufferRef MemBuf ) FUNCTION: size_t LLVMGetBufferSize ( LLVMMemoryBufferRef MemBuf ) ! Deprecated and should be replaced with LLVMParseBitcode2. FUNCTION: int LLVMParseBitcode ( LLVMMemoryBufferRef MemBuf, LLVMModuleRef* OutModule, c-string* OutMessage ) ! Module providers FUNCTION: LLVMModuleProviderRef LLVMCreateModuleProviderForExistingModule ( LLVMModuleRef M ) FUNCTION: void LLVMDisposeModuleProvider ( LLVMModuleProviderRef MP ) ! Targets FUNCTION: LLVMTargetRef LLVMGetFirstTarget ( ) FUNCTION: c-string LLVMGetTargetName ( LLVMTargetRef T ) ! Messages FUNCTION: void LLVMDisposeMessage ( char *Message ) ! Pass Registry FUNCTION: LLVMPassRegistryRef LLVMGetGlobalPassRegistry ( ) ! Initialization FUNCTION: void LLVMInitializeCore ( LLVMPassRegistryRef PR ) FUNCTION: void LLVMLinkInMCJIT ( ) FUNCTION: void LLVMInitializeX86AsmPrinter ( ) FUNCTION: void LLVMInitializeX86TargetInfo ( ) FUNCTION: void LLVMInitializeX86Target ( ) FUNCTION: void LLVMInitializeX86TargetMC ( ) ! Removed symbols: LLVMCreateJITCompiler, LLVMCreateTypeHandle, LLVMOpaqueType