package main foreign import llvmc "LLVM-C.lib" LLVMBool :: distinct int LLVMMemoryBufferRef :: distinct rawptr LLVMContextRef :: distinct rawptr LLVMModuleRef :: distinct rawptr LLVMTypeRef :: distinct rawptr LLVMValueRef :: distinct rawptr LLVMBasicBlockRef :: distinct rawptr LLVMMetadataRef :: distinct rawptr LLVMNamedMDNodeRef :: distinct rawptr LLVMBuilderRef :: distinct rawptr LLVMDIBuilderRef :: distinct rawptr LLVMModuleProviderRef :: distinct rawptr LLVMPassManagerRef :: distinct rawptr LLVMUseRef :: distinct rawptr LLVMAttributeRef :: distinct rawptr LLVMDiagnosticInfoRef :: distinct rawptr LLVMComdatRef :: distinct rawptr LLVMJITEventListenerRef :: distinct rawptr LLVMBinaryRef :: distinct rawptr LLVMTypeKind :: enum { LLVMVoidTypeKind, LLVMHalfTypeKind, LLVMFloatTypeKind, LLVMDoubleTypeKind, LLVMX86_FP80TypeKind, LLVMFP128TypeKind, LLVMPPC_FP128TypeKind, LLVMLabelTypeKind, LLVMIntegerTypeKind, LLVMFunctionTypeKind, LLVMStructTypeKind, LLVMArrayTypeKind, LLVMPointerTypeKind, LLVMVectorTypeKind, LLVMMetadataTypeKind, LLVMX86_MMXTypeKind, LLVMTokenTypeKind, LLVMScalableVectorTypeKind, LLVMBFloatTypeKind, LLVMX86_AMXTypeKind, LLVMTargetExtTypeKind, } @(default_calling_convention = "std") foreign llvmc { LLVMContextCreate :: proc() -> LLVMContextRef --- LLVMModuleCreateWithName :: proc(name: cstring) -> LLVMModuleRef --- LLVMModuleCreateWithNameInContext :: proc(name: cstring, C: LLVMContextRef) -> LLVMModuleRef --- LLVMCreateBuilderInContext :: proc(C: LLVMContextRef) -> LLVMBuilderRef --- LLVMPositionBuilderAtEnd :: proc(Builder: LLVMBuilderRef, Block: LLVMBasicBlockRef) --- LLVMBuildPointerCast :: proc(Builder: LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: cstring) -> LLVMValueRef --- LLVMBuildGlobalString :: proc(Builder: LLVMBuilderRef, Str: cstring, Name: cstring) -> LLVMValueRef --- LLVMBuildGlobalStringPtr :: proc(Builder: LLVMBuilderRef, Str: cstring, Name: cstring) -> LLVMValueRef --- LLVMBuildCall2 :: proc(Builder: LLVMBuilderRef, Type: LLVMTypeRef, Fn: LLVMValueRef, Args: [^]LLVMValueRef, NumArgs: uint, Name: cstring) -> LLVMValueRef --- LLVMBuildRetVoid :: proc(Builder: LLVMBuilderRef) -> LLVMValueRef --- LLVMBuildRet :: proc(Builder: LLVMBuilderRef, V: LLVMValueRef) -> LLVMValueRef --- LLVMInt1TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMInt8TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMInt16TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMInt32TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMInt64TypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMIntTypeInContext :: proc(C: LLVMContextRef, n: uint) -> LLVMTypeRef --- LLVMDoubleTypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMFloatTypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMVoidTypeInContext :: proc(C: LLVMContextRef) -> LLVMTypeRef --- LLVMPointerType :: proc(ElementType: LLVMTypeRef, AddressSpace: uint) -> LLVMTypeRef --- LLVMConstInt :: proc(IntTy: LLVMTypeRef, N: u64, SignExtend: LLVMBool) -> LLVMValueRef --- LLVMConstReal :: proc(RealTy: LLVMTypeRef, N: f64) -> LLVMValueRef --- LLVMFunctionType :: proc(ReturnType: LLVMTypeRef, ParamTypes: [^]LLVMTypeRef, ParamCount: uint, IsVarArg: LLVMBool) -> LLVMTypeRef --- LLVMAddFunction :: proc(M: LLVMModuleRef, Name: cstring, FunctionType: LLVMTypeRef) -> LLVMValueRef --- LLVMAppendBasicBlockInContext :: proc(C: LLVMContextRef, Fn: LLVMValueRef, Name: cstring) -> LLVMBasicBlockRef --- LLVMPrintModuleToFile :: proc(M: LLVMModuleRef, Filename: cstring, ErrorMessage: ^cstring) -> LLVMBool --- LLVMGetValueName2 :: proc(V: LLVMValueRef, Length: ^u64) -> cstring --- LLVMBuildFAdd :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildAdd :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildFSub :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildSub :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildFMul :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildMul :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildFDiv :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildUDiv :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildSDiv :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildFRem :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildURem :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildSRem :: proc(Builder: LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMBuildAlloca :: proc(Builder: LLVMBuilderRef, Ty: LLVMTypeRef, Name: cstring) -> LLVMValueRef --- LLVMBuildStore :: proc(Builder: LLVMBuilderRef, Val: LLVMValueRef, Ptr: LLVMValueRef) -> LLVMValueRef --- LLVMBuildLoad2 :: proc(Builder: LLVMBuilderRef, Ty: LLVMTypeRef, PointerVal: LLVMValueRef, Name: cstring) -> LLVMValueRef --- LLVMTypeOf :: proc(Val: LLVMValueRef) -> LLVMTypeRef --- LLVMDisposeBuilder :: proc(Builder: LLVMBuilderRef) --- LLVMDisposeModule :: proc(M: LLVMModuleRef) --- LLVMContextDispose :: proc(C: LLVMContextRef) --- }