module lib.llvm.c.Core

Code Map

module lib.llvm.c.Core;


enum LLVMAttribute
{
	ZExt,
	SExt,
	NoReturn,
	InReg,
	StructRet,
	NoUnwind,
	NoAlias,
	ByVal,
	Nest,
	ReadNone,
	ReadOnly,
	NoInline,
	AlwaysInline,
	OptimizeForSize,
	StackProtect,
	StackProtectReq,
	Alignment,
	NoCapture,
	NoRedZone,
	NoImplicitFloat,
	Naked,
	InlineHint,
	StackAlignment,
	ReturnsTwice,
	UWTable,
	NonLazyBind,
}

enum LLVMOpcode
{
	Ret,
	Br,
	Switch,
	IndirectBr,
	Invoke,
	Unreachable,
	Add,
	FAdd,
	Sub,
	FSub,
	Mul,
	FMul,
	UDiv,
	SDiv,
	FDiv,
	URem,
	SRem,
	FRem,
	Shl,
	LShr,
	AShr,
	And,
	Or,
	Xor,
	Alloca,
	Load,
	Store,
	GetElementPtr,
	Trunc,
	ZExt,
	SExt,
	FPToUI,
	FPToSI,
	UIToFP,
	SIToFP,
	FPTrunc,
	FPExt,
	PtrToInt,
	IntToPtr,
	BitCast,
	AddrSpaceCast,
	ICmp,
	FCmp,
	PHI,
	Call,
	Select,
	UserOp1,
	UserOp2,
	VAArg,
	ExtractElement,
	InsertElement,
	ShuffleVector,
	ExtractValue,
	InsertValue,
	Fence,
	AtomicCmpXchg,
	AtomicRMW,
	Resume,
	LandingPad,
	CleanupRet,
	CatchRet,
	CatchPad,
	CleanupPad,
	CatchSwitch,
}

enum LLVMTypeKind
{
	Void,
	Half,
	Float,
	Double,
	X86_FP80,
	FP128,
	PPC_FP128,
	Label,
	Integer,
	Function,
	Struct,
	Array,
	Pointer,
	Vector,
	Metadata,
	X86_MMX,
	Token,
}

enum LLVMLinkage
{
	External,
	AvailableExternally,
	LinkOnceAny,
	LinkOnceODR,
	LinkOnceODRAutoHide,
	WeakAny,
	WeakODR,
	Appending,
	Internal,
	Private,
	DLLImport,
	DLLExport,
	ExternalWeak,
	Ghost,
	Common,
	LinkerPrivate,
	LinkerPrivateWeak,
}

enum LLVMVisibility
{
	Default,
	Hidden,
	Protected,
}

enum LLVMDLLStorageClass
{
	Default,
	DLLImport,
	DLLExport,
}

enum LLVMCallConv
{
	C,
	Fast,
	Cold,
	WebKitJS,
	AnyReg,
	X86Stdcall,
	X86Fastcall,
	X86_64_Win64,
}

enum LLVMValueKind
{
	Argument,
	BasicBlock,
	MemoryUse,
	MemoryDef,
	MemoryPhi,
	Function,
	GlobalAlias,
	GlobalIFunc,
	GlobalVariable,
	BlockAddress,
	ConstantExpr,
	ConstantArray,
	ConstantStruct,
	ConstantVector,
	UndefValue,
	ConstantAggregateZero,
	ConstantDataArray,
	ConstantDataVector,
	ConstantInt,
	ConstantFP,
	ConstantPointerNull,
	ConstantTokenNone,
	MetadataAsValue,
	InlineAsm,
	Instruction,
}

enum LLVMIntPredicate
{
	EQ,
	NE,
	UGT,
	UGE,
	ULT,
	ULE,
	SGT,
	SGE,
	SLT,
	SLE,
}

enum LLVMRealPredicate
{
	PredicateFalse,
	OEQ,
	OGT,
	OGE,
	OLT,
	OLE,
	ONE,
	ORD,
	UNO,
	UEQ,
	UGT,
	UGE,
	ULT,
	ULE,
	UNE,
	PredicateTrue,
}

enum LLVMLandingPadClauseTy
{
	Catch,
	Filter,
}

enum LLVMThreadLocalMode
{
	NotThreadLocal,
	GeneralDynamic,
	LocalDynamic,
	InitialExec,
	LocalExec,
}

enum LLVMAtomicOrdering
{
	NotAtomic,
	Unordered,
	Monotonic,
	Acquire,
	Release,
	AcquireRelease,
	SequentiallyConsistent,
}

enum LLVMAtomicRMWBinOp
{
	RMWBinOpXchg,
	RMWBinOpAdd,
	RMWBinOpSub,
	RMWBinOpAnd,
	RMWBinOpNand,
	RMWBinOpOr,
	RMWBinOpXor,
	RMWBinOpMax,
	RMWBinOpMin,
	RMWBinOpUMax,
	RMWBinOpUMin,
}

enum LLVMDiagnosticSeverity
{
	Error,
	Warning,
	Remark,
	Note,
}

enum LLVMAttributeIndex
{
	Return,
	Function,
}

alias LLVMBool = i32;
alias LLVMContextRef = LLVMContext*;
alias LLVMModuleRef = LLVMModule*;
alias LLVMTypeRef = LLVMType*;
alias LLVMValueRef = LLVMValue*;
alias LLVMMetadataRef = LLVMMetadata*;
alias LLVMAttributeRef = LLVMAttributeImpl*;
alias LLVMBasicBlockRef = LLVMBasicBlock*;
alias LLVMBuilderRef = LLVMBuilder*;
alias LLVMDIBuilderRef = LLVMDIBuilder*;
alias LLVMModuleProviderRef = LLVMModuleProvider*;
alias LLVMMemoryBufferRef = LLVMMemoryBuffer*;
alias LLVMPassManagerRef = LLVMPassManager*;
alias LLVMPassRegistryRef = LLVMPassRegistry*;
alias LLVMUseRef = LLVMUse*;
alias LLVMDiagnosticInfoRef = LLVMDiagnosticInfo*;
alias LLVMDiagnosticHandler = fn (LLVMDiagnosticInfoRef, void*) (void);
alias LLVMYieldCallback = fn (LLVMContextRef, void*) (void);

struct LLVMContext
{
}

struct LLVMModule
{
}

struct LLVMType
{
}

struct LLVMValue
{
}

struct LLVMMetadata
{
}

struct LLVMAttributeImpl
{
}

struct LLVMBasicBlock
{
}

struct LLVMBuilder
{
}

struct LLVMDIBuilder
{
}

struct LLVMModuleProvider
{
}

struct LLVMMemoryBuffer
{
}

struct LLVMPassManager
{
}

struct LLVMPassRegistry
{
}

struct LLVMUse
{
}

struct LLVMDiagnosticInfo
{
}

fn LLVMInitializeCore(R: LLVMPassRegistryRef);
fn LLVMShutdown();
fn LLVMCreateMessage(Message: const(char)*) const(char)*;
fn LLVMDisposeMessage(Message: const(char)*);
fn LLVMContextCreate() LLVMContextRef;
fn LLVMGetGlobalContext() LLVMContextRef;
fn LLVMContextSetDiagnosticHandler(C: LLVMContextRef, Handler: LLVMDiagnosticHandler, DiagnosticContext: void*);
fn LLVMContextGetDiagnosticHandler(C: LLVMContextRef) LLVMDiagnosticHandler;
fn LLVMContextGetDiagnosticContext(C: LLVMContextRef) void*;
fn LLVMContextSetYieldCallback(C: LLVMContextRef, Callback: LLVMYieldCallback, OpaqueHandle: void*);
fn LLVMContextDispose(C: LLVMContextRef);
fn LLVMGetDiagInfoDescription(DI: LLVMDiagnosticInfoRef) char*;
fn LLVMGetDiagInfoSeverity(DI: LLVMDiagnosticInfoRef) LLVMDiagnosticSeverity;
fn LLVMGetMDKindIDInContext(C: LLVMContextRef, Name: const(char)*, SLen: u32) u32;
fn LLVMGetMDKindID(Name: const(char)*, SLen: u32) u32;
fn LLVMGetEnumAttributeKindForName(Name: const(char)*, SLen: size_t) u32;
fn LLVMGetLastEnumAttributeKind() u32;
fn LLVMCreateEnumAttribute(C: LLVMContextRef, KindID: u32, Val: u64) LLVMAttributeRef;
fn LLVMGetEnumAttributeKind(A: LLVMAttributeRef) u32;
fn LLVMGetEnumAttributeValue(A: LLVMAttributeRef) u64;
fn LLVMCreateStringAttribute(C: LLVMContextRef, K: const(char)*, KLength: u32, V: const(char)*, VLength: u32) LLVMAttributeRef;
fn LLVMGetStringAttributeKind(A: LLVMAttributeRef, Length: u32*) const(char)*;
fn LLVMGetStringAttributeValue(A: LLVMAttributeRef, Length: u32*) const(char)*;
fn LLVMIsEnumAttribute(A: LLVMAttributeRef) LLVMBool;
fn LLVMIsStringAttribute(A: LLVMAttributeRef) LLVMBool;
fn LLVMModuleCreateWithName(ModuleID: const(char)*) LLVMModuleRef;
fn LLVMModuleCreateWithNameInContext(ModuleID: const(char)*, C: LLVMContextRef) LLVMModuleRef;
fn LLVMCloneModule(M: LLVMModuleRef) LLVMModuleRef;
fn LLVMDisposeModule(M: LLVMModuleRef);
fn LLVMGetModuleIdentifier(M: LLVMModuleRef, Len: size_t*) const(char)*;
fn LLVMSetModuleIdentifier(M: LLVMModuleRef, Ident: const(char)*, Len: size_t);
fn LLVMGetDataLayoutStr(M: LLVMModuleRef) const(char)*;
fn LLVMGetDataLayout(M: LLVMModuleRef) const(char)*;
fn LLVMSetDataLayout(M: LLVMModuleRef, DataLayoutStr: const(char)*);
fn LLVMGetTarget(M: LLVMModuleRef) const(char)*;
fn LLVMSetTarget(M: LLVMModuleRef, Triple: const(char)*);
fn LLVMDumpModule(M: LLVMModuleRef);
fn LLVMPrintModuleToFile(M: LLVMModuleRef, Filename: const(char)*, ErrorMessage: const(char)**) LLVMBool;
fn LLVMPrintModuleToString(M: LLVMModuleRef) char*;
fn LLVMSetModuleInlineAsm(M: LLVMModuleRef, Asm: const(char)*);
fn LLVMGetModuleContext(M: LLVMModuleRef) LLVMContextRef;
fn LLVMGetTypeByName(M: LLVMModuleRef, Name: const(char)*) LLVMTypeRef;
fn LLVMGetNamedMetadataNumOperands(M: LLVMModuleRef, Name: const(char)*) u32;
fn LLVMGetNamedMetadataOperands(M: LLVMModuleRef, Name: const(char)*, Dest: LLVMValueRef*);
fn LLVMAddNamedMetadataOperand(M: LLVMModuleRef, Name: const(char)*, Val: LLVMValueRef);
fn LLVMAddFunction(M: LLVMModuleRef, Name: const(char)*, FunctionTy: LLVMTypeRef) LLVMValueRef;
fn LLVMGetNamedFunction(M: LLVMModuleRef, Name: const(char)*) LLVMValueRef;
fn LLVMGetFirstFunction(M: LLVMModuleRef) LLVMValueRef;
fn LLVMGetLastFunction(M: LLVMModuleRef) LLVMValueRef;
fn LLVMGetNextFunction(Fn: LLVMValueRef) LLVMValueRef;
fn LLVMGetPreviousFunction(Fn: LLVMValueRef) LLVMValueRef;
fn LLVMGetTypeKind(Ty: LLVMTypeRef) LLVMTypeKind;
fn LLVMTypeIsSized(Ty: LLVMTypeRef) LLVMBool;
fn LLVMGetTypeContext(Ty: LLVMTypeRef) LLVMContextRef;
fn LLVMDumpType(Val: LLVMTypeRef);
fn LLVMPrintTypeToString(Val: LLVMTypeRef) char*;
fn LLVMInt1TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMInt8TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMInt16TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMInt32TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMInt64TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMInt128TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMIntTypeInContext(C: LLVMContextRef, NumBits: u32) LLVMTypeRef;
fn LLVMInt1Type() LLVMTypeRef;
fn LLVMInt8Type() LLVMTypeRef;
fn LLVMInt16Type() LLVMTypeRef;
fn LLVMInt32Type() LLVMTypeRef;
fn LLVMInt64Type() LLVMTypeRef;
fn LLVMInt128Type() LLVMTypeRef;
fn LLVMIntType(NumBits: u32) LLVMTypeRef;
fn LLVMGetIntTypeWidth(IntegerTy: LLVMTypeRef) u32;
fn LLVMHalfTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMFloatTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMDoubleTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMX86FP80TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMTokenTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMFP128TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMPPCFP128TypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMHalfType() LLVMTypeRef;
fn LLVMFloatType() LLVMTypeRef;
fn LLVMDoubleType() LLVMTypeRef;
fn LLVMX86FP80Type() LLVMTypeRef;
fn LLVMFP128Type() LLVMTypeRef;
fn LLVMPPCFP128Type() LLVMTypeRef;
fn LLVMFunctionType(ReturnType: LLVMTypeRef, ParamTypes: LLVMTypeRef*, ParamCount: u32, IsVarArg: LLVMBool) LLVMTypeRef;
fn LLVMIsFunctionVarArg(FunctionTy: LLVMTypeRef) LLVMBool;
fn LLVMGetReturnType(FunctionTy: LLVMTypeRef) LLVMTypeRef;
fn LLVMCountParamTypes(FunctionTy: LLVMTypeRef) u32;
fn LLVMGetParamTypes(FunctionTy: LLVMTypeRef, Dest: LLVMTypeRef*);
fn LLVMStructTypeInContext(C: LLVMContextRef, ElementTypes: LLVMTypeRef*, ElementCount: u32, Packed: LLVMBool) LLVMTypeRef;
fn LLVMStructType(ElementTypes: LLVMTypeRef*, ElementCount: u32, Packed: LLVMBool) LLVMTypeRef;
fn LLVMStructCreateNamed(C: LLVMContextRef, Name: const(char)*) LLVMTypeRef;
fn LLVMGetStructName(Ty: LLVMTypeRef) const(char)*;
fn LLVMStructSetBody(StructTy: LLVMTypeRef, ElementTypes: LLVMTypeRef*, ElementCount: u32, Packed: LLVMBool);
fn LLVMCountStructElementTypes(StructTy: LLVMTypeRef) u32;
fn LLVMGetStructElementTypes(StructTy: LLVMTypeRef, Dest: LLVMTypeRef*);
fn LLVMStructGetTypeAtIndex(StructTy: LLVMTypeRef, i: u32) LLVMTypeRef;
fn LLVMIsPackedStruct(StructTy: LLVMTypeRef) LLVMBool;
fn LLVMIsOpaqueStruct(StructTy: LLVMTypeRef) LLVMBool;
fn LLVMGetElementType(Ty: LLVMTypeRef) LLVMTypeRef;
fn LLVMArrayType(ElementType: LLVMTypeRef, ElementCount: u32) LLVMTypeRef;
fn LLVMGetArrayLength(ArrayTy: LLVMTypeRef) u32;
fn LLVMPointerType(ElementType: LLVMTypeRef, AddressSpace: u32) LLVMTypeRef;
fn LLVMGetPointerAddressSpace(PointerTy: LLVMTypeRef) u32;
fn LLVMVectorType(ElementType: LLVMTypeRef, ElementCount: u32) LLVMTypeRef;
fn LLVMGetVectorSize(VectorTy: LLVMTypeRef) u32;
fn LLVMVoidTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMLabelTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMX86MMXTypeInContext(C: LLVMContextRef) LLVMTypeRef;
fn LLVMVoidType() LLVMTypeRef;
fn LLVMLabelType() LLVMTypeRef;
fn LLVMX86MMXType() LLVMTypeRef;
fn LLVMTypeOf(Val: LLVMValueRef) LLVMTypeRef;
fn LLVMGetValueKind(Val: LLVMValueRef) LLVMValueKind;
fn LLVMGetValueName(Val: LLVMValueRef) const(char)*;
fn LLVMSetValueName(Val: LLVMValueRef, Name: const(char)*);
fn LLVMDumpValue(Val: LLVMValueRef);
fn LLVMPrintValueToString(Val: LLVMValueRef) const(char)*;
fn LLVMReplaceAllUsesWith(OldVal: LLVMValueRef, NewVal: LLVMValueRef);
fn LLVMIsConstant(Val: LLVMValueRef) LLVMBool;
fn LLVMIsUndef(Val: LLVMValueRef) LLVMBool;
fn LLVMIsAMDNode(Val: LLVMValueRef) LLVMValueRef;
fn LLVMIsAMDString(Val: LLVMValueRef) LLVMValueRef;
fn LLVMGetFirstUse(Val: LLVMValueRef) LLVMUseRef;
fn LLVMGetNextUse(U: LLVMUseRef) LLVMUseRef;
fn LLVMGetUser(U: LLVMUseRef) LLVMValueRef;
fn LLVMGetUsedValue(U: LLVMUseRef) LLVMValueRef;
fn LLVMGetOperand(Val: LLVMValueRef, Index: u32) LLVMValueRef;
fn LLVMGetOperandUse(Val: LLVMValueRef, Index: u32) LLVMUseRef;
fn LLVMSetOperand(User: LLVMValueRef, Index: u32, Val: LLVMValueRef);
fn LLVMGetNumOperands(Val: LLVMValueRef) i32;
fn LLVMConstNull(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMConstAllOnes(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMGetUndef(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMIsNull(Val: LLVMValueRef) LLVMBool;
fn LLVMConstPointerNull(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMConstInt(IntTy: LLVMTypeRef, N: u64, SignExtend: LLVMBool) LLVMValueRef;
fn LLVMConstIntOfArbitraryPrecision(IntTy: LLVMTypeRef, NumWords: u32, Words: const(u64)*) LLVMValueRef;
fn LLVMConstIntOfString(IntTy: LLVMTypeRef, Text: const(char)*, Radix: u8) LLVMValueRef;
fn LLVMConstIntOfStringAndSize(IntTy: LLVMTypeRef, Text: const(char)*, SLen: u32, Radix: u8) LLVMValueRef;
fn LLVMConstReal(RealTy: LLVMTypeRef, N: f64) LLVMValueRef;
fn LLVMConstRealOfString(RealTy: LLVMTypeRef, Text: const(char)*) LLVMValueRef;
fn LLVMConstRealOfStringAndSize(RealTy: LLVMTypeRef, Text: const(char)*, SLen: u32) LLVMValueRef;
fn LLVMConstIntGetZExtValue(ConstantVal: LLVMValueRef) u64;
fn LLVMConstIntGetSExtValue(ConstantVal: LLVMValueRef) i64;
fn LLVMConstRealGetDouble(ConstantVal: LLVMValueRef, losesInfo: LLVMBool*) f64;
fn LLVMConstStringInContext(C: LLVMContextRef, Str: const(char)*, Length: u32, DontNullTerminate: LLVMBool) LLVMValueRef;
fn LLVMConstString(Str: const(char)*, Length: u32, DontNullTerminate: LLVMBool) LLVMValueRef;
fn LLVMIsConstantString(c: LLVMValueRef) LLVMBool;
fn LLVMGetAsString(c: LLVMValueRef, Length: size_t*) const(char)*;
fn LLVMConstStructInContext(C: LLVMContextRef, ConstantVals: LLVMValueRef*, Count: u32, Packed: LLVMBool) LLVMValueRef;
fn LLVMConstStruct(ConstantVals: LLVMValueRef*, Count: u32, Packed: LLVMBool) LLVMValueRef;
fn LLVMConstArray(ElementTy: LLVMTypeRef, ConstantVals: LLVMValueRef*, Length: u32) LLVMValueRef;
fn LLVMConstNamedStruct(StructTy: LLVMTypeRef, ConstantVals: LLVMValueRef*, Count: u32) LLVMValueRef;
fn LLVMGetElementAsConstant(C: LLVMValueRef, idx: u32) LLVMValueRef;
fn LLVMConstVector(ScalarConstantVals: LLVMValueRef*, Size: u32) LLVMValueRef;
fn LLVMGetConstOpcode(ConstantVal: LLVMValueRef) LLVMOpcode;
fn LLVMAlignOf(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMSizeOf(Ty: LLVMTypeRef) LLVMValueRef;
fn LLVMConstNeg(ConstantVal: LLVMValueRef) LLVMValueRef;
fn LLVMConstNSWNeg(ConstantVal: LLVMValueRef) LLVMValueRef;
fn LLVMConstNUWNeg(ConstantVal: LLVMValueRef) LLVMValueRef;
fn LLVMConstFNeg(ConstantVal: LLVMValueRef) LLVMValueRef;
fn LLVMConstNot(ConstantVal: LLVMValueRef) LLVMValueRef;
fn LLVMConstAdd(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNSWAdd(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNUWAdd(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFAdd(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstSub(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNSWSub(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNUWSub(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFSub(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstMul(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNSWMul(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstNUWMul(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFMul(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstUDiv(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstSDiv(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstExactSDiv(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFDiv(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstURem(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstSRem(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFRem(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstAnd(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstOr(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstXor(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstICmp(Predicate: LLVMIntPredicate, LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstFCmp(Predicate: LLVMRealPredicate, LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstShl(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstLShr(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstAShr(LHSConstant: LLVMValueRef, RHSConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstGEP(ConstantVal: LLVMValueRef, ConstantIndices: LLVMValueRef*, NumIndices: u32) LLVMValueRef;
fn LLVMConstInBoundsGEP(ConstantVal: LLVMValueRef, ConstantIndices: LLVMValueRef*, NumIndices: u32) LLVMValueRef;
fn LLVMConstTrunc(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstSExt(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstZExt(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstFPTrunc(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstFPExt(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstUIToFP(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstSIToFP(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstFPToUI(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstFPToSI(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstPtrToInt(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstIntToPtr(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstBitCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstAddrSpaceCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstZExtOrBitCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstSExtOrBitCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstTruncOrBitCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstPointerCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstIntCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef, isSigned: LLVMBool) LLVMValueRef;
fn LLVMConstFPCast(ConstantVal: LLVMValueRef, ToType: LLVMTypeRef) LLVMValueRef;
fn LLVMConstSelect(ConstantCondition: LLVMValueRef, ConstantIfTrue: LLVMValueRef, ConstantIfFalse: LLVMValueRef) LLVMValueRef;
fn LLVMConstExtractElement(VectorConstant: LLVMValueRef, IndexConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstInsertElement(VectorConstant: LLVMValueRef, ElementValueConstant: LLVMValueRef, IndexConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstShuffleVector(VectorAConstant: LLVMValueRef, VectorBConstant: LLVMValueRef, MaskConstant: LLVMValueRef) LLVMValueRef;
fn LLVMConstExtractValue(AggConstant: LLVMValueRef, IdxList: u32*, NumIdx: u32) LLVMValueRef;
fn LLVMConstInsertValue(AggConstant: LLVMValueRef, ElementValueConstant: LLVMValueRef, IdxList: u32*, NumIdx: u32) LLVMValueRef;
fn LLVMConstInlineAsm(Ty: LLVMTypeRef, AsmString: const(char)*, Constraints: const(char)*, HasSideEffects: LLVMBool, IsAlignStack: LLVMBool) LLVMValueRef;
fn LLVMBlockAddress(F: LLVMValueRef, BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMGetGlobalParent(Global: LLVMValueRef) LLVMModuleRef;
fn LLVMIsDeclaration(Global: LLVMValueRef) LLVMBool;
fn LLVMGetLinkage(Global: LLVMValueRef) LLVMLinkage;
fn LLVMSetLinkage(Global: LLVMValueRef, Linkage: LLVMLinkage);
fn LLVMGetSection(Global: LLVMValueRef) const(char)*;
fn LLVMSetSection(Global: LLVMValueRef, Section: const(char)*);
fn LLVMGetVisibility(Global: LLVMValueRef) LLVMVisibility;
fn LLVMSetVisibility(Global: LLVMValueRef, Viz: LLVMVisibility);
fn LLVMGetDLLStorageClass(Global: LLVMValueRef) LLVMDLLStorageClass;
fn LLVMSetDLLStorageClass(Global: LLVMValueRef, Class: LLVMDLLStorageClass);
fn LLVMHasUnnamedAddr(Global: LLVMValueRef) LLVMBool;
fn LLVMSetUnnamedAddr(Global: LLVMValueRef, HasUnnamedAddr: LLVMBool);
fn LLVMGetAlignment(V: LLVMValueRef) u32;
fn LLVMSetAlignment(V: LLVMValueRef, Bytes: u32);
fn LLVMAddGlobal(M: LLVMModuleRef, Ty: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMAddGlobalInAddressSpace(M: LLVMModuleRef, Ty: LLVMTypeRef, Name: const(char)*, AddressSpace: u32) LLVMValueRef;
fn LLVMGetNamedGlobal(M: LLVMModuleRef, Name: const(char)*) LLVMValueRef;
fn LLVMGetFirstGlobal(M: LLVMModuleRef) LLVMValueRef;
fn LLVMGetLastGlobal(M: LLVMModuleRef) LLVMValueRef;
fn LLVMGetNextGlobal(GlobalVar: LLVMValueRef) LLVMValueRef;
fn LLVMGetPreviousGlobal(GlobalVar: LLVMValueRef) LLVMValueRef;
fn LLVMDeleteGlobal(GlobalVar: LLVMValueRef);
fn LLVMGetInitializer(GlobalVar: LLVMValueRef) LLVMValueRef;
fn LLVMSetInitializer(GlobalVar: LLVMValueRef, ConstantVal: LLVMValueRef);
fn LLVMIsThreadLocal(GlobalVar: LLVMValueRef) LLVMBool;
fn LLVMSetThreadLocal(GlobalVar: LLVMValueRef, IsThreadLocal: LLVMBool);
fn LLVMIsGlobalConstant(GlobalVar: LLVMValueRef) LLVMBool;
fn LLVMSetGlobalConstant(GlobalVar: LLVMValueRef, IsConstant: LLVMBool);
fn LLVMGetThreadLocalMode(GlobalVar: LLVMValueRef) LLVMThreadLocalMode;
fn LLVMSetThreadLocalMode(GlobalVar: LLVMValueRef, Mode: LLVMThreadLocalMode);
fn LLVMIsExternallyInitialized(GlobalVar: LLVMValueRef) LLVMBool;
fn LLVMSetExternallyInitialized(GlobalVar: LLVMValueRef, IsExtInit: LLVMBool);
fn LLVMAddAlias(M: LLVMModuleRef, Ty: LLVMTypeRef, Aliasee: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMDeleteFunction(Fn: LLVMValueRef);
fn LLVMHasPersonalityFn(Fn: LLVMValueRef) LLVMBool;
fn LLVMGetPersonalityFn(Fn: LLVMValueRef) LLVMValueRef;
fn LLVMSetPersonalityFn(Fn: LLVMValueRef, PersonalityFn: LLVMValueRef);
fn LLVMGetIntrinsicID(Fn: LLVMValueRef) u32;
fn LLVMGetFunctionCallConv(Fn: LLVMValueRef) u32;
fn LLVMSetFunctionCallConv(Fn: LLVMValueRef, CC: u32);
fn LLVMGetGC(Fn: LLVMValueRef) const(char)*;
fn LLVMSetGC(Fn: LLVMValueRef, Name: const(char)*);
fn LLVMAddFunctionAttr(Fn: LLVMValueRef, PA: LLVMAttribute);
fn LLVMAddAttributeAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, A: LLVMAttributeRef);
fn LLVMGetAttributeCountAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex) u32;
fn LLVMGetAttributesAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, Attrs: LLVMAttributeRef*);
fn LLVMGetEnumAttributeAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, KindID: u32) LLVMAttributeRef;
fn LLVMGetStringAttributeAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, K: const(char)*, KLen: u32) LLVMAttributeRef;
fn LLVMRemoveEnumAttributeAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, KindID: u32);
fn LLVMRemoveStringAttributeAtIndex(F: LLVMValueRef, Idx: LLVMAttributeIndex, K: const(char)*, KLen: u32);
fn LLVMAddTargetDependentFunctionAttr(Fn: LLVMValueRef, A: const(char)*, V: const(char)*);
fn LLVMGetFunctionAttr(Fn: LLVMValueRef) LLVMAttribute;
fn LLVMRemoveFunctionAttr(Fn: LLVMValueRef, PA: LLVMAttribute);
fn LLVMCountParams(Fn: LLVMValueRef) u32;
fn LLVMGetParams(Fn: LLVMValueRef, Params: LLVMValueRef*);
fn LLVMGetParam(Fn: LLVMValueRef, Index: u32) LLVMValueRef;
fn LLVMGetParamParent(Inst: LLVMValueRef) LLVMValueRef;
fn LLVMGetFirstParam(Fn: LLVMValueRef) LLVMValueRef;
fn LLVMGetLastParam(Fn: LLVMValueRef) LLVMValueRef;
fn LLVMGetNextParam(Arg: LLVMValueRef) LLVMValueRef;
fn LLVMGetPreviousParam(Arg: LLVMValueRef) LLVMValueRef;
fn LLVMAddAttribute(Arg: LLVMValueRef, PA: LLVMAttribute);
fn LLVMRemoveAttribute(Arg: LLVMValueRef, PA: LLVMAttribute);
fn LLVMGetAttribute(Arg: LLVMValueRef) LLVMAttribute;
fn LLVMSetParamAlignment(Arg: LLVMValueRef, Align: u32);
fn LLVMMDStringInContext(C: LLVMContextRef, Str: const(char)*, SLen: u32) LLVMValueRef;
fn LLVMMDString(Str: const(char)*, SLen: u32) LLVMValueRef;
fn LLVMMDNodeInContext(C: LLVMContextRef, Vals: LLVMValueRef*, Count: u32) LLVMValueRef;
fn LLVMMDNode(Vals: LLVMValueRef*, Count: u32) LLVMValueRef;
fn LLVMMetadataAsValue(C: LLVMContextRef, MD: LLVMMetadataRef) LLVMValueRef;
fn LLVMValueAsMetadata(Val: LLVMValueRef) LLVMMetadataRef;
fn LLVMGetMDString(V: LLVMValueRef, Length: u32*) const(char)*;
fn LLVMGetMDNodeNumOperands(V: LLVMValueRef) u32;
fn LLVMGetMDNodeOperands(V: LLVMValueRef, Dest: LLVMValueRef*);
fn LLVMBasicBlockAsValue(BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMValueIsBasicBlock(Val: LLVMValueRef) LLVMBool;
fn LLVMValueAsBasicBlock(Val: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetBasicBlockName(BB: LLVMBasicBlockRef) const(char)*;
fn LLVMGetBasicBlockParent(BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMGetBasicBlockTerminator(BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMCountBasicBlocks(Fn: LLVMValueRef) u32;
fn LLVMGetBasicBlocks(Fn: LLVMValueRef, BasicBlocks: LLVMBasicBlockRef*);
fn LLVMGetFirstBasicBlock(Fn: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetLastBasicBlock(Fn: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetNextBasicBlock(BB: LLVMBasicBlockRef) LLVMBasicBlockRef;
fn LLVMGetPreviousBasicBlock(BB: LLVMBasicBlockRef) LLVMBasicBlockRef;
fn LLVMGetEntryBasicBlock(Fn: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMAppendBasicBlockInContext(C: LLVMContextRef, Fn: LLVMValueRef, Name: const(char)*) LLVMBasicBlockRef;
fn LLVMAppendBasicBlock(Fn: LLVMValueRef, Name: const(char)*) LLVMBasicBlockRef;
fn LLVMInsertBasicBlockInContext(C: LLVMContextRef, BB: LLVMBasicBlockRef, Name: const(char)*) LLVMBasicBlockRef;
fn LLVMInsertBasicBlock(InsertBeforeBB: LLVMBasicBlockRef, Name: const(char)*) LLVMBasicBlockRef;
fn LLVMDeleteBasicBlock(BB: LLVMBasicBlockRef);
fn LLVMRemoveBasicBlockFromParent(BB: LLVMBasicBlockRef);
fn LLVMMoveBasicBlockBefore(BB: LLVMBasicBlockRef, MovePos: LLVMBasicBlockRef);
fn LLVMMoveBasicBlockAfter(BB: LLVMBasicBlockRef, MovePos: LLVMBasicBlockRef);
fn LLVMGetFirstInstruction(BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMGetLastInstruction(BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMHasMetadata(Val: LLVMValueRef) i32;
fn LLVMGetMetadata(Val: LLVMValueRef, KindID: u32) LLVMValueRef;
fn LLVMSetMetadata(Val: LLVMValueRef, KindID: u32, Node: LLVMValueRef);
fn LLVMGetInstructionParent(Inst: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetNextInstruction(Inst: LLVMValueRef) LLVMValueRef;
fn LLVMGetPreviousInstruction(Inst: LLVMValueRef) LLVMValueRef;
fn LLVMInstructionRemoveFromParent(Inst: LLVMValueRef);
fn LLVMInstructionEraseFromParent(Inst: LLVMValueRef);
fn LLVMGetInstructionOpcode(Inst: LLVMValueRef) LLVMOpcode;
fn LLVMGetICmpPredicate(Inst: LLVMValueRef) LLVMIntPredicate;
fn LLVMGetFCmpPredicate(Inst: LLVMValueRef) LLVMRealPredicate;
fn LLVMInstructionClone(Inst: LLVMValueRef) LLVMValueRef;
fn LLVMGetNumArgOperands(Instr: LLVMValueRef) u32;
fn LLVMSetInstructionCallConv(Instr: LLVMValueRef, CC: u32);
fn LLVMGetInstructionCallConv(Instr: LLVMValueRef) u32;
fn LLVMAddInstrAttribute(Instr: LLVMValueRef, index: u32, LLVMAttribute);
fn LLVMRemoveInstrAttribute(Instr: LLVMValueRef, index: u32, LLVMAttribute);
fn LLVMSetInstrParamAlignment(Instr: LLVMValueRef, index: u32, Align: u32);
fn LLVMAddCallSiteAttribute(C: LLVMValueRef, Idx: LLVMAttributeIndex, A: LLVMAttributeRef);
fn LLVMGetCallSiteAttributeCount(C: LLVMValueRef, Idx: LLVMAttributeIndex) u32;
fn LLVMGetCallSiteAttributes(C: LLVMValueRef, Idx: LLVMAttributeIndex, Attrs: LLVMAttributeRef*);
fn LLVMGetCallSiteEnumAttribute(C: LLVMValueRef, Idx: LLVMAttributeIndex, KindID: u32) LLVMAttributeRef;
fn LLVMGetCallSiteStringAttribute(C: LLVMValueRef, Idx: LLVMAttributeIndex, K: const(char)*, KLen: u32) LLVMAttributeRef;
fn LLVMRemoveCallSiteEnumAttribute(C: LLVMValueRef, Idx: LLVMAttributeIndex, KindID: u32);
fn LLVMRemoveCallSiteStringAttribute(C: LLVMValueRef, Idx: LLVMAttributeIndex, K: const(char)*, KLen: u32);
fn LLVMGetCalledValue(Instr: LLVMValueRef) LLVMValueRef;
fn LLVMIsTailCall(CallInst: LLVMValueRef) LLVMBool;
fn LLVMSetTailCall(CallInst: LLVMValueRef, IsTailCall: LLVMBool);
fn LLVMGetNormalDest(InvokeInst: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetUnwindDest(InvokeInst: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMSetNormalDest(InvokeInst: LLVMValueRef, B: LLVMBasicBlockRef);
fn LLVMSetUnwindDest(InvokeInst: LLVMValueRef, B: LLVMBasicBlockRef);
fn LLVMGetNumSuccessors(Term: LLVMValueRef) u32;
fn LLVMGetSuccessor(Term: LLVMValueRef, i: u32) LLVMBasicBlockRef;
fn LLVMSetSuccessor(Term: LLVMValueRef, i: u32, block: LLVMBasicBlockRef);
fn LLVMIsConditional(Branch: LLVMValueRef) LLVMBool;
fn LLVMGetCondition(Branch: LLVMValueRef) LLVMValueRef;
fn LLVMSetCondition(Branch: LLVMValueRef, Cond: LLVMValueRef);
fn LLVMGetSwitchDefaultDest(SwitchInstr: LLVMValueRef) LLVMBasicBlockRef;
fn LLVMGetAllocatedType(Alloca: LLVMValueRef) LLVMTypeRef;
fn LLVMIsInBounds(GEP: LLVMValueRef) LLVMBool;
fn LLVMSetIsInBounds(GEP: LLVMValueRef, InBounds: LLVMBool);
fn LLVMAddIncoming(PhiNode: LLVMValueRef, IncomingValues: LLVMValueRef*, IncomingBlocks: LLVMBasicBlockRef*, Count: u32);
fn LLVMCountIncoming(PhiNode: LLVMValueRef) u32;
fn LLVMGetIncomingValue(PhiNode: LLVMValueRef, Index: u32) LLVMValueRef;
fn LLVMGetIncomingBlock(PhiNode: LLVMValueRef, Index: u32) LLVMBasicBlockRef;
fn LLVMGetNumIndices(Inst: LLVMValueRef) u32;
fn LLVMGetIndices(Inst: LLVMValueRef) const(u32)*;
fn LLVMCreateBuilderInContext(C: LLVMContextRef) LLVMBuilderRef;
fn LLVMCreateBuilder() LLVMBuilderRef;
fn LLVMPositionBuilder(Builder: LLVMBuilderRef, Block: LLVMBasicBlockRef, Instr: LLVMValueRef);
fn LLVMPositionBuilderBefore(Builder: LLVMBuilderRef, Instr: LLVMValueRef);
fn LLVMPositionBuilderAtEnd(Builder: LLVMBuilderRef, Block: LLVMBasicBlockRef);
fn LLVMGetInsertBlock(Builder: LLVMBuilderRef) LLVMBasicBlockRef;
fn LLVMClearInsertionPosition(Builder: LLVMBuilderRef);
fn LLVMInsertIntoBuilder(Builder: LLVMBuilderRef, Instr: LLVMValueRef);
fn LLVMInsertIntoBuilderWithName(Builder: LLVMBuilderRef, Instr: LLVMValueRef, Name: const(char)*);
fn LLVMDisposeBuilder(Builder: LLVMBuilderRef);
fn LLVMSetCurrentDebugLocation(Builder: LLVMBuilderRef, L: LLVMValueRef);
fn LLVMGetCurrentDebugLocation(Builder: LLVMBuilderRef) LLVMValueRef;
fn LLVMSetInstDebugLocation(Builder: LLVMBuilderRef, Inst: LLVMValueRef);
fn LLVMBuildRetVoid(LLVMBuilderRef) LLVMValueRef;
fn LLVMBuildRet(LLVMBuilderRef, V: LLVMValueRef) LLVMValueRef;
fn LLVMBuildAggregateRet(LLVMBuilderRef, RetVals: LLVMValueRef*, N: u32) LLVMValueRef;
fn LLVMBuildBr(LLVMBuilderRef, Dest: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMBuildCondBr(LLVMBuilderRef, If: LLVMValueRef, Then: LLVMBasicBlockRef, Else: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMBuildSwitch(LLVMBuilderRef, V: LLVMValueRef, Else: LLVMBasicBlockRef, NumCases: u32) LLVMValueRef;
fn LLVMBuildIndirectBr(B: LLVMBuilderRef, Addr: LLVMValueRef, NumDests: u32) LLVMValueRef;
fn LLVMBuildInvoke(LLVMBuilderRef, Fn: LLVMValueRef, Args: LLVMValueRef*, NumArgs: u32, Then: LLVMBasicBlockRef, Catch: LLVMBasicBlockRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildLandingPad(B: LLVMBuilderRef, Ty: LLVMTypeRef, PersFn: LLVMValueRef, NumClauses: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildCleanupRet(B: LLVMBuilderRef, CatchPad: LLVMValueRef, BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMBuildCatchRet(B: LLVMBuilderRef, CatchPad: LLVMValueRef, BB: LLVMBasicBlockRef) LLVMValueRef;
fn LLVMBuildCatchPad(B: LLVMBuilderRef, ParentPad: LLVMValueRef, Args: LLVMValueRef*, NumArgs: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildCleanupPad(B: LLVMBuilderRef, ParentPad: LLVMValueRef, Args: LLVMValueRef*, NumArgs: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildCatchSwitch(B: LLVMBuilderRef, ParentPad: LLVMValueRef, UnwindBB: LLVMBasicBlockRef, NumHandlers: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildResume(B: LLVMBuilderRef, Exn: LLVMValueRef) LLVMValueRef;
fn LLVMBuildUnreachable(LLVMBuilderRef) LLVMValueRef;
fn LLVMAddCase(Switch: LLVMValueRef, OnVal: LLVMValueRef, Dest: LLVMBasicBlockRef);
fn LLVMAddDestination(IndirectBr: LLVMValueRef, Dest: LLVMBasicBlockRef);
fn LLVMGetNumClauses(LandingPad: LLVMValueRef) u32;
fn LLVMGetClause(LandingPad: LLVMValueRef, Idx: u32) LLVMValueRef;
fn LLVMAddClause(LandingPad: LLVMValueRef, ClauseVal: LLVMValueRef);
fn LLVMIsCleanup(LandingPad: LLVMValueRef) LLVMBool;
fn LLVMSetCleanup(LandingPad: LLVMValueRef, Val: LLVMBool);
fn LLVMAddHandler(CatchSwitch: LLVMValueRef, Dest: LLVMBasicBlockRef);
fn LLVMGetNumHandlers(CatchSwitch: LLVMValueRef) u32;
fn LLVMGetHandlers(CatchSwitch: LLVMValueRef, Handlers: LLVMBasicBlockRef*);
fn LLVMGetArgOperand(Funclet: LLVMValueRef, i: u32) LLVMValueRef;
fn LLVMSetArgOperand(Funclet: LLVMValueRef, i: u32, value: LLVMValueRef);
fn LLVMGetParentCatchSwitch(CatchPad: LLVMValueRef) LLVMValueRef;
fn LLVMSetParentCatchSwitch(CatchPad: LLVMValueRef, CatchSwitch: LLVMValueRef);
fn LLVMBuildAdd(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNSWAdd(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNUWAdd(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFAdd(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSub(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNSWSub(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNUWSub(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFSub(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildMul(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNSWMul(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNUWMul(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFMul(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildUDiv(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSDiv(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildExactSDiv(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFDiv(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildURem(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSRem(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFRem(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildShl(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildLShr(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildAShr(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildAnd(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildOr(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildXor(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildBinOp(B: LLVMBuilderRef, Op: LLVMOpcode, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNeg(LLVMBuilderRef, V: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNSWNeg(B: LLVMBuilderRef, V: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNUWNeg(B: LLVMBuilderRef, V: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFNeg(LLVMBuilderRef, V: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildNot(LLVMBuilderRef, V: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildMalloc(LLVMBuilderRef, Ty: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildArrayMalloc(LLVMBuilderRef, Ty: LLVMTypeRef, Val: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildAlloca(LLVMBuilderRef, Ty: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildArrayAlloca(LLVMBuilderRef, Ty: LLVMTypeRef, Val: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFree(LLVMBuilderRef, PointerVal: LLVMValueRef) LLVMValueRef;
fn LLVMBuildLoad(LLVMBuilderRef, PointerVal: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildStore(LLVMBuilderRef, Val: LLVMValueRef, Ptr: LLVMValueRef) LLVMValueRef;
fn LLVMBuildGEP(B: LLVMBuilderRef, Pointer: LLVMValueRef, Indices: LLVMValueRef*, NumIndices: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildInBoundsGEP(B: LLVMBuilderRef, Pointer: LLVMValueRef, Indices: LLVMValueRef*, NumIndices: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildStructGEP(B: LLVMBuilderRef, Pointer: LLVMValueRef, Idx: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildGlobalString(B: LLVMBuilderRef, Str: const(char)*, Name: const(char)*) LLVMValueRef;
fn LLVMBuildGlobalStringPtr(B: LLVMBuilderRef, Str: const(char)*, Name: const(char)*) LLVMValueRef;
fn LLVMGetVolatile(MemoryAccessInst: LLVMValueRef) LLVMBool;
fn LLVMSetVolatile(MemoryAccessInst: LLVMValueRef, IsVolatile: LLVMBool);
fn LLVMGetOrdering(MemoryAccessInst: LLVMValueRef) LLVMAtomicOrdering;
fn LLVMSetOrdering(MemoryAccessInst: LLVMValueRef, Ordering: LLVMAtomicOrdering);
fn LLVMBuildTrunc(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildZExt(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSExt(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFPToUI(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFPToSI(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildUIToFP(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSIToFP(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFPTrunc(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFPExt(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildPtrToInt(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildIntToPtr(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildBitCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildAddrSpaceCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildZExtOrBitCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSExtOrBitCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildTruncOrBitCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildCast(B: LLVMBuilderRef, Op: LLVMOpcode, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildPointerCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildIntCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFPCast(LLVMBuilderRef, Val: LLVMValueRef, DestTy: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildICmp(LLVMBuilderRef, Op: LLVMIntPredicate, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFCmp(LLVMBuilderRef, Op: LLVMRealPredicate, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildPhi(LLVMBuilderRef, Ty: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildCall(LLVMBuilderRef, Fn: LLVMValueRef, Args: LLVMValueRef*, NumArgs: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildSelect(LLVMBuilderRef, If: LLVMValueRef, Then: LLVMValueRef, Else: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildVAArg(LLVMBuilderRef, List: LLVMValueRef, Ty: LLVMTypeRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildExtractElement(LLVMBuilderRef, VecVal: LLVMValueRef, Index: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildInsertElement(LLVMBuilderRef, VecVal: LLVMValueRef, EltVal: LLVMValueRef, Index: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildShuffleVector(LLVMBuilderRef, V1: LLVMValueRef, V2: LLVMValueRef, Mask: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildExtractValue(LLVMBuilderRef, AggVal: LLVMValueRef, Index: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildInsertValue(LLVMBuilderRef, AggVal: LLVMValueRef, EltVal: LLVMValueRef, Index: u32, Name: const(char)*) LLVMValueRef;
fn LLVMBuildIsNull(LLVMBuilderRef, Val: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildIsNotNull(LLVMBuilderRef, Val: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildPtrDiff(LLVMBuilderRef, LHS: LLVMValueRef, RHS: LLVMValueRef, Name: const(char)*) LLVMValueRef;
fn LLVMBuildFence(B: LLVMBuilderRef, ordering: LLVMAtomicOrdering, singleThread: LLVMBool, Name: const(char)*) LLVMValueRef;
fn LLVMBuildAtomicRMW(B: LLVMBuilderRef, op: LLVMAtomicRMWBinOp, PTR: LLVMValueRef, Val: LLVMValueRef, ordering: LLVMAtomicOrdering, singleThread: LLVMBool) LLVMValueRef;
fn LLVMBuildAtomicCmpXchg(B: LLVMBuilderRef, Ptr: LLVMValueRef, Cmp: LLVMValueRef, New: LLVMValueRef, SuccessOrdering: LLVMAtomicOrdering, FailureOrdering: LLVMAtomicOrdering, SingleThread: LLVMBool) LLVMValueRef;
fn LLVMIsAtomicSingleThread(AtomicInst: LLVMValueRef) LLVMBool;
fn LLVMSetAtomicSingleThread(AtomicInst: LLVMValueRef, SingleThread: LLVMBool);
fn LLVMGetCmpXchgSuccessOrdering(CmpXchgInst: LLVMValueRef) LLVMAtomicOrdering;
fn LLVMSetCmpXchgSuccessOrdering(CmpXchgInst: LLVMValueRef, Ordering: LLVMAtomicOrdering);
fn LLVMGetCmpXchgFailureOrdering(CmpXchgInst: LLVMValueRef) LLVMAtomicOrdering;
fn LLVMSetCmpXchgFailureOrdering(CmpXchgInst: LLVMValueRef, Ordering: LLVMAtomicOrdering);
fn LLVMCreateModuleProviderForExistingModule(M: LLVMModuleRef) LLVMModuleProviderRef;
fn LLVMDisposeModuleProvider(M: LLVMModuleProviderRef);
fn LLVMCreateMemoryBufferWithContentsOfFile(Path: const(char)*, OutMemBuf: LLVMMemoryBufferRef*, OutMessage: const(char)**) LLVMBool;
fn LLVMCreateMemoryBufferWithSTDIN(OutMemBuf: LLVMMemoryBufferRef*, OutMessage: const(char)**) LLVMBool;
fn LLVMCreateMemoryBufferWithMemoryRange(InputData: const(char)*, InputDataLength: size_t, BufferName: const(char)*, RequiresNullTerminator: LLVMBool) LLVMMemoryBufferRef;
fn LLVMCreateMemoryBufferWithMemoryRangeCopy(InputData: const(char)*, InputDataLength: size_t, BufferName: const(char)*) LLVMMemoryBufferRef;
fn LLVMGetBufferStart(MemBuf: LLVMMemoryBufferRef) const(char)*;
fn LLVMGetBufferSize(MemBuf: LLVMMemoryBufferRef) size_t;
fn LLVMDisposeMemoryBuffer(MemBuf: LLVMMemoryBufferRef);
fn LLVMGetGlobalPassRegistry() LLVMPassRegistryRef;
fn LLVMCreatePassManager() LLVMPassManagerRef;
fn LLVMCreateFunctionPassManagerForModule(M: LLVMModuleRef) LLVMPassManagerRef;
fn LLVMCreateFunctionPassManager(MP: LLVMModuleProviderRef) LLVMPassManagerRef;
fn LLVMRunPassManager(PM: LLVMPassManagerRef, M: LLVMModuleRef) LLVMBool;
fn LLVMInitializeFunctionPassManager(FPM: LLVMPassManagerRef) LLVMBool;
fn LLVMRunFunctionPassManager(FPM: LLVMPassManagerRef, F: LLVMValueRef) LLVMBool;
fn LLVMFinalizeFunctionPassManager(FPM: LLVMPassManagerRef) LLVMBool;
fn LLVMDisposePassManager(PM: LLVMPassManagerRef);
fn LLVMStartMultithreaded() LLVMBool;
fn LLVMStopMultithreaded();
fn LLVMIsMultithreaded() LLVMBool;