(* Wolfram Language Source File *)

(*****************************************************

        Source file generated by Wolfram Language AutoLibraryLink
        Package.  Understand that AutoLibraryLink might in the future
        overwrite any custom changes to this source code.

        Package: LLVMLink`llvmc
        Generated on behalf of: abduld
        CreationDate: Thu 20 Oct 2016 03:10:26

*******************************************************)



LLVMEnumeration["LLVMVerifierFailureAction", "LLVMAbortProcessAction"] = 0;

LLVMEnumeration["LLVMVerifierFailureAction", "LLVMPrintMessageAction"] = 1;

LLVMEnumeration["LLVMVerifierFailureAction", "LLVMReturnStatusAction"] = 2;

LLVMEnumeration["anonymousEnum0", "LLVMAttributeReturnIndex"] = 0;

LLVMEnumeration["anonymousEnum0", "LLVMAttributeFunctionIndex"] = 1;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingNotAtomic"] = 0;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingUnordered"] = 1;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingMonotonic"] = 2;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingAcquire"] = 4;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingRelease"] = 5;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingAcquireRelease"] = 6;

LLVMEnumeration["LLVMAtomicOrdering", "LLVMAtomicOrderingSequentiallyConsistent"] = 7;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpXchg"] = 0;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpAdd"] = 1;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpSub"] = 2;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpAnd"] = 3;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpNand"] = 4;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpOr"] = 5;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpXor"] = 6;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpMax"] = 7;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpMin"] = 8;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpUMax"] = 9;

LLVMEnumeration["LLVMAtomicRMWBinOp", "LLVMAtomicRMWBinOpUMin"] = 10;

LLVMEnumeration["LLVMAttribute", "LLVMZExtAttribute"] = 1;

LLVMEnumeration["LLVMAttribute", "LLVMSExtAttribute"] = 2;

LLVMEnumeration["LLVMAttribute", "LLVMNoReturnAttribute"] = 3;

LLVMEnumeration["LLVMAttribute", "LLVMInRegAttribute"] = 4;

LLVMEnumeration["LLVMAttribute", "LLVMStructRetAttribute"] = 5;

LLVMEnumeration["LLVMAttribute", "LLVMNoUnwindAttribute"] = 6;

LLVMEnumeration["LLVMAttribute", "LLVMNoAliasAttribute"] = 7;

LLVMEnumeration["LLVMAttribute", "LLVMByValAttribute"] = 8;

LLVMEnumeration["LLVMAttribute", "LLVMNestAttribute"] = 9;

LLVMEnumeration["LLVMAttribute", "LLVMReadNoneAttribute"] = 10;

LLVMEnumeration["LLVMAttribute", "LLVMReadOnlyAttribute"] = 11;

LLVMEnumeration["LLVMAttribute", "LLVMNoInlineAttribute"] = 12;

LLVMEnumeration["LLVMAttribute", "LLVMAlwaysInlineAttribute"] = 13;

LLVMEnumeration["LLVMAttribute", "LLVMOptimizeForSizeAttribute"] = 14;

LLVMEnumeration["LLVMAttribute", "LLVMStackProtectAttribute"] = 15;

LLVMEnumeration["LLVMAttribute", "LLVMStackProtectReqAttribute"] = 16;

LLVMEnumeration["LLVMAttribute", "LLVMAlignment"] = 17;

LLVMEnumeration["LLVMAttribute", "LLVMNoCaptureAttribute"] = 18;

LLVMEnumeration["LLVMAttribute", "LLVMNoRedZoneAttribute"] = 19;

LLVMEnumeration["LLVMAttribute", "LLVMNoImplicitFloatAttribute"] = 20;

LLVMEnumeration["LLVMAttribute", "LLVMNakedAttribute"] = 21;

LLVMEnumeration["LLVMAttribute", "LLVMInlineHintAttribute"] = 22;

LLVMEnumeration["LLVMAttribute", "LLVMStackAlignment"] = 23;

LLVMEnumeration["LLVMAttribute", "LLVMReturnsTwice"] = 24;

LLVMEnumeration["LLVMAttribute", "LLVMUWTable"] = 25;

LLVMEnumeration["LLVMAttribute", "LLVMNonLazyBind"] = 26;

LLVMEnumeration["LLVMCallConv", "LLVMCCallConv"] = 0;

LLVMEnumeration["LLVMCallConv", "LLVMFastCallConv"] = 8;

LLVMEnumeration["LLVMCallConv", "LLVMColdCallConv"] = 9;

LLVMEnumeration["LLVMCallConv", "LLVMWebKitJSCallConv"] = 12;

LLVMEnumeration["LLVMCallConv", "LLVMAnyRegCallConv"] = 13;

LLVMEnumeration["LLVMCallConv", "LLVMX86StdcallCallConv"] = 64;

LLVMEnumeration["LLVMCallConv", "LLVMX86FastcallCallConv"] = 65;

LLVMEnumeration["LLVMDiagnosticSeverity", "LLVMDSError"] = 0;

LLVMEnumeration["LLVMDiagnosticSeverity", "LLVMDSWarning"] = 1;

LLVMEnumeration["LLVMDiagnosticSeverity", "LLVMDSRemark"] = 2;

LLVMEnumeration["LLVMDiagnosticSeverity", "LLVMDSNote"] = 3;

LLVMEnumeration["LLVMDLLStorageClass", "LLVMDefaultStorageClass"] = 0;

LLVMEnumeration["LLVMDLLStorageClass", "LLVMDLLImportStorageClass"] = 1;

LLVMEnumeration["LLVMDLLStorageClass", "LLVMDLLExportStorageClass"] = 2;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntEQ"] = 32;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntNE"] = 33;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntUGT"] = 34;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntUGE"] = 35;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntULT"] = 36;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntULE"] = 37;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntSGT"] = 38;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntSGE"] = 39;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntSLT"] = 40;

LLVMEnumeration["LLVMIntPredicate", "LLVMIntSLE"] = 41;

LLVMEnumeration["LLVMLandingPadClauseTy", "LLVMLandingPadCatch"] = 0;

LLVMEnumeration["LLVMLandingPadClauseTy", "LLVMLandingPadFilter"] = 1;

LLVMEnumeration["LLVMLinkage", "LLVMExternalLinkage"] = 0;

LLVMEnumeration["LLVMLinkage", "LLVMAvailableExternallyLinkage"] = 1;

LLVMEnumeration["LLVMLinkage", "LLVMLinkOnceAnyLinkage"] = 2;

LLVMEnumeration["LLVMLinkage", "LLVMLinkOnceODRLinkage"] = 3;

LLVMEnumeration["LLVMLinkage", "LLVMLinkOnceODRAutoHideLinkage"] = 4;

LLVMEnumeration["LLVMLinkage", "LLVMWeakAnyLinkage"] = 5;

LLVMEnumeration["LLVMLinkage", "LLVMWeakODRLinkage"] = 6;

LLVMEnumeration["LLVMLinkage", "LLVMAppendingLinkage"] = 7;

LLVMEnumeration["LLVMLinkage", "LLVMInternalLinkage"] = 8;

LLVMEnumeration["LLVMLinkage", "LLVMPrivateLinkage"] = 9;

LLVMEnumeration["LLVMLinkage", "LLVMDLLImportLinkage"] = 10;

LLVMEnumeration["LLVMLinkage", "LLVMDLLExportLinkage"] = 11;

LLVMEnumeration["LLVMLinkage", "LLVMExternalWeakLinkage"] = 12;

LLVMEnumeration["LLVMLinkage", "LLVMGhostLinkage"] = 13;

LLVMEnumeration["LLVMLinkage", "LLVMCommonLinkage"] = 14;

LLVMEnumeration["LLVMLinkage", "LLVMLinkerPrivateLinkage"] = 15;

LLVMEnumeration["LLVMLinkage", "LLVMLinkerPrivateWeakLinkage"] = 16;

LLVMEnumeration["LLVMOpcode", "LLVMRet"] = 1;

LLVMEnumeration["LLVMOpcode", "LLVMBr"] = 2;

LLVMEnumeration["LLVMOpcode", "LLVMSwitch"] = 3;

LLVMEnumeration["LLVMOpcode", "LLVMIndirectBr"] = 4;

LLVMEnumeration["LLVMOpcode", "LLVMInvoke"] = 5;

LLVMEnumeration["LLVMOpcode", "LLVMUnreachable"] = 6;

LLVMEnumeration["LLVMOpcode", "LLVMAdd"] = 7;

LLVMEnumeration["LLVMOpcode", "LLVMFAdd"] = 8;

LLVMEnumeration["LLVMOpcode", "LLVMSub"] = 9;

LLVMEnumeration["LLVMOpcode", "LLVMFSub"] = 10;

LLVMEnumeration["LLVMOpcode", "LLVMMul"] = 11;

LLVMEnumeration["LLVMOpcode", "LLVMFMul"] = 12;

LLVMEnumeration["LLVMOpcode", "LLVMUDiv"] = 13;

LLVMEnumeration["LLVMOpcode", "LLVMSDiv"] = 14;

LLVMEnumeration["LLVMOpcode", "LLVMFDiv"] = 15;

LLVMEnumeration["LLVMOpcode", "LLVMURem"] = 16;

LLVMEnumeration["LLVMOpcode", "LLVMSRem"] = 17;

LLVMEnumeration["LLVMOpcode", "LLVMFRem"] = 18;

LLVMEnumeration["LLVMOpcode", "LLVMShl"] = 19;

LLVMEnumeration["LLVMOpcode", "LLVMLShr"] = 20;

LLVMEnumeration["LLVMOpcode", "LLVMAShr"] = 21;

LLVMEnumeration["LLVMOpcode", "LLVMAnd"] = 22;

LLVMEnumeration["LLVMOpcode", "LLVMOr"] = 23;

LLVMEnumeration["LLVMOpcode", "LLVMXor"] = 24;

LLVMEnumeration["LLVMOpcode", "LLVMAlloca"] = 25;

LLVMEnumeration["LLVMOpcode", "LLVMLoad"] = 26;

LLVMEnumeration["LLVMOpcode", "LLVMStore"] = 27;

LLVMEnumeration["LLVMOpcode", "LLVMGetElementPtr"] = 28;

LLVMEnumeration["LLVMOpcode", "LLVMTrunc"] = 29;

LLVMEnumeration["LLVMOpcode", "LLVMZExt"] = 30;

LLVMEnumeration["LLVMOpcode", "LLVMSExt"] = 31;

LLVMEnumeration["LLVMOpcode", "LLVMFPToUI"] = 32;

LLVMEnumeration["LLVMOpcode", "LLVMFPToSI"] = 33;

LLVMEnumeration["LLVMOpcode", "LLVMUIToFP"] = 34;

LLVMEnumeration["LLVMOpcode", "LLVMSIToFP"] = 35;

LLVMEnumeration["LLVMOpcode", "LLVMFPTrunc"] = 36;

LLVMEnumeration["LLVMOpcode", "LLVMFPExt"] = 37;

LLVMEnumeration["LLVMOpcode", "LLVMPtrToInt"] = 38;

LLVMEnumeration["LLVMOpcode", "LLVMIntToPtr"] = 39;

LLVMEnumeration["LLVMOpcode", "LLVMBitCast"] = 40;

LLVMEnumeration["LLVMOpcode", "LLVMAddrSpaceCast"] = 41;

LLVMEnumeration["LLVMOpcode", "LLVMICmp"] = 42;

LLVMEnumeration["LLVMOpcode", "LLVMFCmp"] = 43;

LLVMEnumeration["LLVMOpcode", "LLVMPHI"] = 44;

LLVMEnumeration["LLVMOpcode", "LLVMCall"] = 45;

LLVMEnumeration["LLVMOpcode", "LLVMSelect"] = 46;

LLVMEnumeration["LLVMOpcode", "LLVMUserOp1"] = 47;

LLVMEnumeration["LLVMOpcode", "LLVMUserOp2"] = 48;

LLVMEnumeration["LLVMOpcode", "LLVMVAArg"] = 49;

LLVMEnumeration["LLVMOpcode", "LLVMExtractElement"] = 50;

LLVMEnumeration["LLVMOpcode", "LLVMInsertElement"] = 51;

LLVMEnumeration["LLVMOpcode", "LLVMShuffleVector"] = 52;

LLVMEnumeration["LLVMOpcode", "LLVMExtractValue"] = 53;

LLVMEnumeration["LLVMOpcode", "LLVMInsertValue"] = 54;

LLVMEnumeration["LLVMOpcode", "LLVMFence"] = 55;

LLVMEnumeration["LLVMOpcode", "LLVMAtomicCmpXchg"] = 56;

LLVMEnumeration["LLVMOpcode", "LLVMAtomicRMW"] = 57;

LLVMEnumeration["LLVMOpcode", "LLVMResume"] = 58;

LLVMEnumeration["LLVMOpcode", "LLVMLandingPad"] = 59;

LLVMEnumeration["LLVMOpcode", "LLVMCleanupRet"] = 60;

LLVMEnumeration["LLVMOpcode", "LLVMCatchRet"] = 61;

LLVMEnumeration["LLVMOpcode", "LLVMCatchPad"] = 62;

LLVMEnumeration["LLVMOpcode", "LLVMCleanupPad"] = 63;

LLVMEnumeration["LLVMOpcode", "LLVMCatchSwitch"] = 64;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealPredicateFalse"] = 0;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealOEQ"] = 1;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealOGT"] = 2;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealOGE"] = 3;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealOLT"] = 4;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealOLE"] = 5;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealONE"] = 6;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealORD"] = 7;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealUNO"] = 8;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealUEQ"] = 9;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealUGT"] = 10;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealUGE"] = 11;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealULT"] = 12;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealULE"] = 13;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealUNE"] = 14;

LLVMEnumeration["LLVMRealPredicate", "LLVMRealPredicateTrue"] = 15;

LLVMEnumeration["LLVMThreadLocalMode", "LLVMNotThreadLocal"] = 0;

LLVMEnumeration["LLVMThreadLocalMode", "LLVMGeneralDynamicTLSModel"] = 1;

LLVMEnumeration["LLVMThreadLocalMode", "LLVMLocalDynamicTLSModel"] = 2;

LLVMEnumeration["LLVMThreadLocalMode", "LLVMInitialExecTLSModel"] = 3;

LLVMEnumeration["LLVMThreadLocalMode", "LLVMLocalExecTLSModel"] = 4;

LLVMEnumeration["LLVMTypeKind", "LLVMVoidTypeKind"] = 0;

LLVMEnumeration["LLVMTypeKind", "LLVMHalfTypeKind"] = 1;

LLVMEnumeration["LLVMTypeKind", "LLVMFloatTypeKind"] = 2;

LLVMEnumeration["LLVMTypeKind", "LLVMDoubleTypeKind"] = 3;

LLVMEnumeration["LLVMTypeKind", "LLVMX86_FP80TypeKind"] = 4;

LLVMEnumeration["LLVMTypeKind", "LLVMFP128TypeKind"] = 5;

LLVMEnumeration["LLVMTypeKind", "LLVMPPC_FP128TypeKind"] = 6;

LLVMEnumeration["LLVMTypeKind", "LLVMLabelTypeKind"] = 7;

LLVMEnumeration["LLVMTypeKind", "LLVMIntegerTypeKind"] = 8;

LLVMEnumeration["LLVMTypeKind", "LLVMFunctionTypeKind"] = 9;

LLVMEnumeration["LLVMTypeKind", "LLVMStructTypeKind"] = 10;

LLVMEnumeration["LLVMTypeKind", "LLVMArrayTypeKind"] = 11;

LLVMEnumeration["LLVMTypeKind", "LLVMPointerTypeKind"] = 12;

LLVMEnumeration["LLVMTypeKind", "LLVMVectorTypeKind"] = 13;

LLVMEnumeration["LLVMTypeKind", "LLVMMetadataTypeKind"] = 14;

LLVMEnumeration["LLVMTypeKind", "LLVMX86_MMXTypeKind"] = 15;

LLVMEnumeration["LLVMTypeKind", "LLVMTokenTypeKind"] = 16;

LLVMEnumeration["LLVMValueKind", "LLVMArgumentValueKind"] = 0;

LLVMEnumeration["LLVMValueKind", "LLVMBasicBlockValueKind"] = 1;

LLVMEnumeration["LLVMValueKind", "LLVMMemoryUseValueKind"] = 2;

LLVMEnumeration["LLVMValueKind", "LLVMMemoryDefValueKind"] = 3;

LLVMEnumeration["LLVMValueKind", "LLVMMemoryPhiValueKind"] = 4;

LLVMEnumeration["LLVMValueKind", "LLVMFunctionValueKind"] = 5;

LLVMEnumeration["LLVMValueKind", "LLVMGlobalAliasValueKind"] = 6;

LLVMEnumeration["LLVMValueKind", "LLVMGlobalIFuncValueKind"] = 7;

LLVMEnumeration["LLVMValueKind", "LLVMGlobalVariableValueKind"] = 8;

LLVMEnumeration["LLVMValueKind", "LLVMBlockAddressValueKind"] = 9;

LLVMEnumeration["LLVMValueKind", "LLVMConstantExprValueKind"] = 10;

LLVMEnumeration["LLVMValueKind", "LLVMConstantArrayValueKind"] = 11;

LLVMEnumeration["LLVMValueKind", "LLVMConstantStructValueKind"] = 12;

LLVMEnumeration["LLVMValueKind", "LLVMConstantVectorValueKind"] = 13;

LLVMEnumeration["LLVMValueKind", "LLVMUndefValueValueKind"] = 14;

LLVMEnumeration["LLVMValueKind", "LLVMConstantAggregateZeroValueKind"] = 15;

LLVMEnumeration["LLVMValueKind", "LLVMConstantDataArrayValueKind"] = 16;

LLVMEnumeration["LLVMValueKind", "LLVMConstantDataVectorValueKind"] = 17;

LLVMEnumeration["LLVMValueKind", "LLVMConstantIntValueKind"] = 18;

LLVMEnumeration["LLVMValueKind", "LLVMConstantFPValueKind"] = 19;

LLVMEnumeration["LLVMValueKind", "LLVMConstantPointerNullValueKind"] = 20;

LLVMEnumeration["LLVMValueKind", "LLVMConstantTokenNoneValueKind"] = 21;

LLVMEnumeration["LLVMValueKind", "LLVMMetadataAsValueValueKind"] = 22;

LLVMEnumeration["LLVMValueKind", "LLVMInlineAsmValueKind"] = 23;

LLVMEnumeration["LLVMValueKind", "LLVMInstructionValueKind"] = 24;

LLVMEnumeration["LLVMVisibility", "LLVMDefaultVisibility"] = 0;

LLVMEnumeration["LLVMVisibility", "LLVMHiddenVisibility"] = 1;

LLVMEnumeration["LLVMVisibility", "LLVMProtectedVisibility"] = 2;

LLVMEnumeration["LLVMLinkerMode", "LLVMLinkerDestroySource"] = 0;

LLVMEnumeration["LLVMLinkerMode", "LLVMLinkerPreserveSource_Removed"] = 1;

LLVMEnumeration["LLVMOrcErrorCode", "LLVMOrcErrSuccess"] = 0;

LLVMEnumeration["LLVMOrcErrorCode", "LLVMOrcErrGeneric"] = 1;

LLVMEnumeration["LLVMByteOrdering", "LLVMBigEndian"] = 0;

LLVMEnumeration["LLVMByteOrdering", "LLVMLittleEndian"] = 1;

LLVMEnumeration["LLVMCodeGenFileType", "LLVMAssemblyFile"] = 0;

LLVMEnumeration["LLVMCodeGenFileType", "LLVMObjectFile"] = 1;

LLVMEnumeration["LLVMCodeGenOptLevel", "LLVMCodeGenLevelNone"] = 0;

LLVMEnumeration["LLVMCodeGenOptLevel", "LLVMCodeGenLevelLess"] = 1;

LLVMEnumeration["LLVMCodeGenOptLevel", "LLVMCodeGenLevelDefault"] = 2;

LLVMEnumeration["LLVMCodeGenOptLevel", "LLVMCodeGenLevelAggressive"] = 3;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelDefault"] = 0;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelJITDefault"] = 1;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelSmall"] = 2;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelKernel"] = 3;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelMedium"] = 4;

LLVMEnumeration["LLVMCodeModel", "LLVMCodeModelLarge"] = 5;

LLVMEnumeration["LLVMRelocMode", "LLVMRelocDefault"] = 0;

LLVMEnumeration["LLVMRelocMode", "LLVMRelocStatic"] = 1;

LLVMEnumeration["LLVMRelocMode", "LLVMRelocPIC"] = 2;

LLVMEnumeration["LLVMRelocMode", "LLVMRelocDynamicNoPic"] = 3;



LLVMLibraryFunction["LLVMVerifyFunction"] :=
LLVMLibraryFunction["LLVMVerifyFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMVerifyFunction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMVerifierFailureAction -> enum LLVMVerifierFailureAction] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMVerifyModule"] :=
LLVMLibraryFunction["LLVMVerifyModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMVerifyModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMVerifierFailureAction -> enum LLVMVerifierFailureAction] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMViewFunctionCFG"] :=
LLVMLibraryFunction["LLVMViewFunctionCFG"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMViewFunctionCFG_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMViewFunctionCFGOnly"] :=
LLVMLibraryFunction["LLVMViewFunctionCFGOnly"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMViewFunctionCFGOnly_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetBitcodeModule"] :=
LLVMLibraryFunction["LLVMGetBitcodeModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBitcodeModule_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBitcodeModule2"] :=
LLVMLibraryFunction["LLVMGetBitcodeModule2"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBitcodeModule2_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBitcodeModuleInContext"] :=
LLVMLibraryFunction["LLVMGetBitcodeModuleInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBitcodeModuleInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBitcodeModuleInContext2"] :=
LLVMLibraryFunction["LLVMGetBitcodeModuleInContext2"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBitcodeModuleInContext2_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMParseBitcode"] :=
LLVMLibraryFunction["LLVMParseBitcode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseBitcode_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMParseBitcode2"] :=
LLVMLibraryFunction["LLVMParseBitcode2"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseBitcode2_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMParseBitcodeInContext"] :=
LLVMLibraryFunction["LLVMParseBitcodeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseBitcodeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMParseBitcodeInContext2"] :=
LLVMLibraryFunction["LLVMParseBitcodeInContext2"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseBitcodeInContext2_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMWriteBitcodeToFD"] :=
LLVMLibraryFunction["LLVMWriteBitcodeToFD"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMWriteBitcodeToFD_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[int] *)
        Integer,
        (* Type[int] *)
        Integer,
        (* Type[int] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMWriteBitcodeToFile"] :=
LLVMLibraryFunction["LLVMWriteBitcodeToFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMWriteBitcodeToFile_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMWriteBitcodeToFileHandle"] :=
LLVMLibraryFunction["LLVMWriteBitcodeToFileHandle"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMWriteBitcodeToFileHandle_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[int] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMWriteBitcodeToMemoryBuffer"] :=
LLVMLibraryFunction["LLVMWriteBitcodeToMemoryBuffer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMWriteBitcodeToMemoryBuffer_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
    Integer
]

LLVMLibraryFunction["LLVMAddAlias"] :=
LLVMLibraryFunction["LLVMAddAlias"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddAlias_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMAddAttribute"] :=
LLVMLibraryFunction["LLVMAddAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddAttributeAtIndex"] :=
LLVMLibraryFunction["LLVMAddAttributeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddAttributeAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddCallSiteAttribute"] :=
LLVMLibraryFunction["LLVMAddCallSiteAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddCallSiteAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddCase"] :=
LLVMLibraryFunction["LLVMAddCase"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddCase_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddClause"] :=
LLVMLibraryFunction["LLVMAddClause"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddClause_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddDestination"] :=
LLVMLibraryFunction["LLVMAddDestination"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddDestination_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddFunction"] :=
LLVMLibraryFunction["LLVMAddFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddFunction_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMAddFunctionAttr"] :=
LLVMLibraryFunction["LLVMAddFunctionAttr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddFunctionAttr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddGlobal"] :=
LLVMLibraryFunction["LLVMAddGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddGlobal_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMAddGlobalInAddressSpace"] :=
LLVMLibraryFunction["LLVMAddGlobalInAddressSpace"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddGlobalInAddressSpace_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMAddIncoming"] :=
LLVMLibraryFunction["LLVMAddIncoming"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddIncoming_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[LLVMBasicBlockRef * -> struct LLVMOpaqueBasicBlock * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddInstrAttribute"] :=
LLVMLibraryFunction["LLVMAddInstrAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddInstrAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddNamedMetadataOperand"] :=
LLVMLibraryFunction["LLVMAddNamedMetadataOperand"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddNamedMetadataOperand_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddTargetDependentFunctionAttr"] :=
LLVMLibraryFunction["LLVMAddTargetDependentFunctionAttr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddTargetDependentFunctionAttr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAlignOf"] :=
LLVMLibraryFunction["LLVMAlignOf"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAlignOf_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMAppendBasicBlock"] :=
LLVMLibraryFunction["LLVMAppendBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAppendBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMAppendBasicBlockInContext"] :=
LLVMLibraryFunction["LLVMAppendBasicBlockInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAppendBasicBlockInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMArrayType"] :=
LLVMLibraryFunction["LLVMArrayType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMArrayType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMBasicBlockAsValue"] :=
LLVMLibraryFunction["LLVMBasicBlockAsValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBasicBlockAsValue_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBlockAddress"] :=
LLVMLibraryFunction["LLVMBlockAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBlockAddress_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAdd"] :=
LLVMLibraryFunction["LLVMBuildAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAdd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAddrSpaceCast"] :=
LLVMLibraryFunction["LLVMBuildAddrSpaceCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAddrSpaceCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAggregateRet"] :=
LLVMLibraryFunction["LLVMBuildAggregateRet"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAggregateRet_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAlloca"] :=
LLVMLibraryFunction["LLVMBuildAlloca"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAlloca_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAnd"] :=
LLVMLibraryFunction["LLVMBuildAnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAnd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildArrayAlloca"] :=
LLVMLibraryFunction["LLVMBuildArrayAlloca"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildArrayAlloca_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildArrayMalloc"] :=
LLVMLibraryFunction["LLVMBuildArrayMalloc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildArrayMalloc_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAShr"] :=
LLVMLibraryFunction["LLVMBuildAShr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAShr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAtomicCmpXchg"] :=
LLVMLibraryFunction["LLVMBuildAtomicCmpXchg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAtomicCmpXchg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildAtomicRMW"] :=
LLVMLibraryFunction["LLVMBuildAtomicRMW"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildAtomicRMW_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMAtomicRMWBinOp -> enum LLVMAtomicRMWBinOp] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildBinOp"] :=
LLVMLibraryFunction["LLVMBuildBinOp"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildBinOp_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMOpcode -> enum LLVMOpcode] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildBitCast"] :=
LLVMLibraryFunction["LLVMBuildBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildBitCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildBr"] :=
LLVMLibraryFunction["LLVMBuildBr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildBr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildCall"] :=
LLVMLibraryFunction["LLVMBuildCall"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildCall_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildCast"] :=
LLVMLibraryFunction["LLVMBuildCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMOpcode -> enum LLVMOpcode] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildCondBr"] :=
LLVMLibraryFunction["LLVMBuildCondBr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildCondBr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildExactSDiv"] :=
LLVMLibraryFunction["LLVMBuildExactSDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildExactSDiv_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildExactUDiv"] :=
LLVMLibraryFunction["LLVMBuildExactUDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildExactUDiv_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildExtractElement"] :=
LLVMLibraryFunction["LLVMBuildExtractElement"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildExtractElement_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildExtractValue"] :=
LLVMLibraryFunction["LLVMBuildExtractValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildExtractValue_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFAdd"] :=
LLVMLibraryFunction["LLVMBuildFAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFAdd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFCmp"] :=
LLVMLibraryFunction["LLVMBuildFCmp"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFCmp_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMRealPredicate -> enum LLVMRealPredicate] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFDiv"] :=
LLVMLibraryFunction["LLVMBuildFDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFDiv_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFence"] :=
LLVMLibraryFunction["LLVMBuildFence"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFence_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFMul"] :=
LLVMLibraryFunction["LLVMBuildFMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFMul_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFNeg"] :=
LLVMLibraryFunction["LLVMBuildFNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFNeg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFPCast"] :=
LLVMLibraryFunction["LLVMBuildFPCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFPCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFPExt"] :=
LLVMLibraryFunction["LLVMBuildFPExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFPExt_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFPToSI"] :=
LLVMLibraryFunction["LLVMBuildFPToSI"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFPToSI_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFPToUI"] :=
LLVMLibraryFunction["LLVMBuildFPToUI"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFPToUI_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFPTrunc"] :=
LLVMLibraryFunction["LLVMBuildFPTrunc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFPTrunc_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFree"] :=
LLVMLibraryFunction["LLVMBuildFree"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFree_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFRem"] :=
LLVMLibraryFunction["LLVMBuildFRem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFRem_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildFSub"] :=
LLVMLibraryFunction["LLVMBuildFSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildFSub_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildGEP"] :=
LLVMLibraryFunction["LLVMBuildGEP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildGEP_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildGlobalString"] :=
LLVMLibraryFunction["LLVMBuildGlobalString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildGlobalString_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildGlobalStringPtr"] :=
LLVMLibraryFunction["LLVMBuildGlobalStringPtr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildGlobalStringPtr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildICmp"] :=
LLVMLibraryFunction["LLVMBuildICmp"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildICmp_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMIntPredicate -> enum LLVMIntPredicate] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildInBoundsGEP"] :=
LLVMLibraryFunction["LLVMBuildInBoundsGEP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildInBoundsGEP_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildIndirectBr"] :=
LLVMLibraryFunction["LLVMBuildIndirectBr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildIndirectBr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildInsertElement"] :=
LLVMLibraryFunction["LLVMBuildInsertElement"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildInsertElement_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildInsertValue"] :=
LLVMLibraryFunction["LLVMBuildInsertValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildInsertValue_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildIntCast"] :=
LLVMLibraryFunction["LLVMBuildIntCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildIntCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildIntToPtr"] :=
LLVMLibraryFunction["LLVMBuildIntToPtr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildIntToPtr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildInvoke"] :=
LLVMLibraryFunction["LLVMBuildInvoke"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildInvoke_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildIsNotNull"] :=
LLVMLibraryFunction["LLVMBuildIsNotNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildIsNotNull_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildIsNull"] :=
LLVMLibraryFunction["LLVMBuildIsNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildIsNull_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildLandingPad"] :=
LLVMLibraryFunction["LLVMBuildLandingPad"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildLandingPad_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildLoad"] :=
LLVMLibraryFunction["LLVMBuildLoad"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildLoad_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildLShr"] :=
LLVMLibraryFunction["LLVMBuildLShr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildLShr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildMalloc"] :=
LLVMLibraryFunction["LLVMBuildMalloc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildMalloc_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildMul"] :=
LLVMLibraryFunction["LLVMBuildMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildMul_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNeg"] :=
LLVMLibraryFunction["LLVMBuildNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNeg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNot"] :=
LLVMLibraryFunction["LLVMBuildNot"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNot_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNSWAdd"] :=
LLVMLibraryFunction["LLVMBuildNSWAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNSWAdd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNSWMul"] :=
LLVMLibraryFunction["LLVMBuildNSWMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNSWMul_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNSWNeg"] :=
LLVMLibraryFunction["LLVMBuildNSWNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNSWNeg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNSWSub"] :=
LLVMLibraryFunction["LLVMBuildNSWSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNSWSub_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNUWAdd"] :=
LLVMLibraryFunction["LLVMBuildNUWAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNUWAdd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNUWMul"] :=
LLVMLibraryFunction["LLVMBuildNUWMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNUWMul_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNUWNeg"] :=
LLVMLibraryFunction["LLVMBuildNUWNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNUWNeg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildNUWSub"] :=
LLVMLibraryFunction["LLVMBuildNUWSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildNUWSub_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildOr"] :=
LLVMLibraryFunction["LLVMBuildOr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildOr_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildPhi"] :=
LLVMLibraryFunction["LLVMBuildPhi"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildPhi_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildPointerCast"] :=
LLVMLibraryFunction["LLVMBuildPointerCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildPointerCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildPtrDiff"] :=
LLVMLibraryFunction["LLVMBuildPtrDiff"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildPtrDiff_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildPtrToInt"] :=
LLVMLibraryFunction["LLVMBuildPtrToInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildPtrToInt_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildResume"] :=
LLVMLibraryFunction["LLVMBuildResume"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildResume_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildRet"] :=
LLVMLibraryFunction["LLVMBuildRet"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildRet_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildRetVoid"] :=
LLVMLibraryFunction["LLVMBuildRetVoid"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildRetVoid_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSDiv"] :=
LLVMLibraryFunction["LLVMBuildSDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSDiv_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSelect"] :=
LLVMLibraryFunction["LLVMBuildSelect"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSelect_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSExt"] :=
LLVMLibraryFunction["LLVMBuildSExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSExt_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSExtOrBitCast"] :=
LLVMLibraryFunction["LLVMBuildSExtOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSExtOrBitCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildShl"] :=
LLVMLibraryFunction["LLVMBuildShl"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildShl_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildShuffleVector"] :=
LLVMLibraryFunction["LLVMBuildShuffleVector"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildShuffleVector_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSIToFP"] :=
LLVMLibraryFunction["LLVMBuildSIToFP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSIToFP_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSRem"] :=
LLVMLibraryFunction["LLVMBuildSRem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSRem_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildStore"] :=
LLVMLibraryFunction["LLVMBuildStore"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildStore_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildStructGEP"] :=
LLVMLibraryFunction["LLVMBuildStructGEP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildStructGEP_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSub"] :=
LLVMLibraryFunction["LLVMBuildSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSub_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildSwitch"] :=
LLVMLibraryFunction["LLVMBuildSwitch"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildSwitch_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildTrunc"] :=
LLVMLibraryFunction["LLVMBuildTrunc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildTrunc_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildTruncOrBitCast"] :=
LLVMLibraryFunction["LLVMBuildTruncOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildTruncOrBitCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildUDiv"] :=
LLVMLibraryFunction["LLVMBuildUDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildUDiv_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildUIToFP"] :=
LLVMLibraryFunction["LLVMBuildUIToFP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildUIToFP_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildUnreachable"] :=
LLVMLibraryFunction["LLVMBuildUnreachable"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildUnreachable_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildURem"] :=
LLVMLibraryFunction["LLVMBuildURem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildURem_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildVAArg"] :=
LLVMLibraryFunction["LLVMBuildVAArg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildVAArg_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildXor"] :=
LLVMLibraryFunction["LLVMBuildXor"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildXor_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildZExt"] :=
LLVMLibraryFunction["LLVMBuildZExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildZExt_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMBuildZExtOrBitCast"] :=
LLVMLibraryFunction["LLVMBuildZExtOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMBuildZExtOrBitCast_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMClearInsertionPosition"] :=
LLVMLibraryFunction["LLVMClearInsertionPosition"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMClearInsertionPosition_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMCloneModule"] :=
LLVMLibraryFunction["LLVMCloneModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCloneModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstAdd"] :=
LLVMLibraryFunction["LLVMConstAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstAdd_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstAddrSpaceCast"] :=
LLVMLibraryFunction["LLVMConstAddrSpaceCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstAddrSpaceCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstAllOnes"] :=
LLVMLibraryFunction["LLVMConstAllOnes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstAllOnes_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstAnd"] :=
LLVMLibraryFunction["LLVMConstAnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstAnd_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstArray"] :=
LLVMLibraryFunction["LLVMConstArray"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstArray_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstAShr"] :=
LLVMLibraryFunction["LLVMConstAShr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstAShr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstBitCast"] :=
LLVMLibraryFunction["LLVMConstBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstBitCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstExactSDiv"] :=
LLVMLibraryFunction["LLVMConstExactSDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstExactSDiv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstExactUDiv"] :=
LLVMLibraryFunction["LLVMConstExactUDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstExactUDiv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstExtractElement"] :=
LLVMLibraryFunction["LLVMConstExtractElement"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstExtractElement_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstExtractValue"] :=
LLVMLibraryFunction["LLVMConstExtractValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstExtractValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFAdd"] :=
LLVMLibraryFunction["LLVMConstFAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFAdd_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFCmp"] :=
LLVMLibraryFunction["LLVMConstFCmp"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFCmp_Wrapper",
    {
        (* Type[LLVMRealPredicate -> enum LLVMRealPredicate] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFDiv"] :=
LLVMLibraryFunction["LLVMConstFDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFDiv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFMul"] :=
LLVMLibraryFunction["LLVMConstFMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFMul_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFNeg"] :=
LLVMLibraryFunction["LLVMConstFNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFNeg_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFPCast"] :=
LLVMLibraryFunction["LLVMConstFPCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFPCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFPExt"] :=
LLVMLibraryFunction["LLVMConstFPExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFPExt_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFPToSI"] :=
LLVMLibraryFunction["LLVMConstFPToSI"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFPToSI_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFPToUI"] :=
LLVMLibraryFunction["LLVMConstFPToUI"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFPToUI_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFPTrunc"] :=
LLVMLibraryFunction["LLVMConstFPTrunc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFPTrunc_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFRem"] :=
LLVMLibraryFunction["LLVMConstFRem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFRem_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstFSub"] :=
LLVMLibraryFunction["LLVMConstFSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstFSub_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstGEP"] :=
LLVMLibraryFunction["LLVMConstGEP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstGEP_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstICmp"] :=
LLVMLibraryFunction["LLVMConstICmp"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstICmp_Wrapper",
    {
        (* Type[LLVMIntPredicate -> enum LLVMIntPredicate] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstInBoundsGEP"] :=
LLVMLibraryFunction["LLVMConstInBoundsGEP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstInBoundsGEP_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstInlineAsm"] :=
LLVMLibraryFunction["LLVMConstInlineAsm"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstInlineAsm_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMBool -> int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstInsertElement"] :=
LLVMLibraryFunction["LLVMConstInsertElement"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstInsertElement_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstInsertValue"] :=
LLVMLibraryFunction["LLVMConstInsertValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstInsertValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstInt"] :=
LLVMLibraryFunction["LLVMConstInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstInt_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned long long] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntCast"] :=
LLVMLibraryFunction["LLVMConstIntCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntGetSExtValue"] :=
LLVMLibraryFunction["LLVMConstIntGetSExtValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntGetSExtValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[long long] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntGetZExtValue"] :=
LLVMLibraryFunction["LLVMConstIntGetZExtValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntGetZExtValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntOfArbitraryPrecision"] :=
LLVMLibraryFunction["LLVMConstIntOfArbitraryPrecision"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntOfArbitraryPrecision_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const uint64_t * -> const unsigned long long *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntOfString"] :=
LLVMLibraryFunction["LLVMConstIntOfString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntOfString_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[uint8_t -> unsigned char] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntOfStringAndSize"] :=
LLVMLibraryFunction["LLVMConstIntOfStringAndSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntOfStringAndSize_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer,
        (* Type[uint8_t -> unsigned char] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstIntToPtr"] :=
LLVMLibraryFunction["LLVMConstIntToPtr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstIntToPtr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstLShr"] :=
LLVMLibraryFunction["LLVMConstLShr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstLShr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstMul"] :=
LLVMLibraryFunction["LLVMConstMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstMul_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNamedStruct"] :=
LLVMLibraryFunction["LLVMConstNamedStruct"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNamedStruct_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNeg"] :=
LLVMLibraryFunction["LLVMConstNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNeg_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNot"] :=
LLVMLibraryFunction["LLVMConstNot"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNot_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNSWAdd"] :=
LLVMLibraryFunction["LLVMConstNSWAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNSWAdd_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNSWMul"] :=
LLVMLibraryFunction["LLVMConstNSWMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNSWMul_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNSWNeg"] :=
LLVMLibraryFunction["LLVMConstNSWNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNSWNeg_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNSWSub"] :=
LLVMLibraryFunction["LLVMConstNSWSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNSWSub_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNull"] :=
LLVMLibraryFunction["LLVMConstNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNull_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNUWAdd"] :=
LLVMLibraryFunction["LLVMConstNUWAdd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNUWAdd_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNUWMul"] :=
LLVMLibraryFunction["LLVMConstNUWMul"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNUWMul_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNUWNeg"] :=
LLVMLibraryFunction["LLVMConstNUWNeg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNUWNeg_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstNUWSub"] :=
LLVMLibraryFunction["LLVMConstNUWSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstNUWSub_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstOr"] :=
LLVMLibraryFunction["LLVMConstOr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstOr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstPointerCast"] :=
LLVMLibraryFunction["LLVMConstPointerCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstPointerCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstPointerNull"] :=
LLVMLibraryFunction["LLVMConstPointerNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstPointerNull_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstPtrToInt"] :=
LLVMLibraryFunction["LLVMConstPtrToInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstPtrToInt_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstReal"] :=
LLVMLibraryFunction["LLVMConstReal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstReal_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[double] *)
        Real
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstRealGetDouble"] :=
LLVMLibraryFunction["LLVMConstRealGetDouble"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstRealGetDouble_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool * -> int *] *)
        Integer
    },
    (* Type[double] *)
    Real
]

LLVMLibraryFunction["LLVMConstRealOfString"] :=
LLVMLibraryFunction["LLVMConstRealOfString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstRealOfString_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstRealOfStringAndSize"] :=
LLVMLibraryFunction["LLVMConstRealOfStringAndSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstRealOfStringAndSize_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSDiv"] :=
LLVMLibraryFunction["LLVMConstSDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSDiv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSelect"] :=
LLVMLibraryFunction["LLVMConstSelect"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSelect_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSExt"] :=
LLVMLibraryFunction["LLVMConstSExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSExt_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSExtOrBitCast"] :=
LLVMLibraryFunction["LLVMConstSExtOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSExtOrBitCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstShl"] :=
LLVMLibraryFunction["LLVMConstShl"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstShl_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstShuffleVector"] :=
LLVMLibraryFunction["LLVMConstShuffleVector"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstShuffleVector_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSIToFP"] :=
LLVMLibraryFunction["LLVMConstSIToFP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSIToFP_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSRem"] :=
LLVMLibraryFunction["LLVMConstSRem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSRem_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstString"] :=
LLVMLibraryFunction["LLVMConstString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstString_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstStringInContext"] :=
LLVMLibraryFunction["LLVMConstStringInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstStringInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstStruct"] :=
LLVMLibraryFunction["LLVMConstStruct"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstStruct_Wrapper",
    {
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstStructInContext"] :=
LLVMLibraryFunction["LLVMConstStructInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstStructInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstSub"] :=
LLVMLibraryFunction["LLVMConstSub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstSub_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstTrunc"] :=
LLVMLibraryFunction["LLVMConstTrunc"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstTrunc_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstTruncOrBitCast"] :=
LLVMLibraryFunction["LLVMConstTruncOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstTruncOrBitCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstUDiv"] :=
LLVMLibraryFunction["LLVMConstUDiv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstUDiv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstUIToFP"] :=
LLVMLibraryFunction["LLVMConstUIToFP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstUIToFP_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstURem"] :=
LLVMLibraryFunction["LLVMConstURem"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstURem_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstVector"] :=
LLVMLibraryFunction["LLVMConstVector"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstVector_Wrapper",
    {
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstXor"] :=
LLVMLibraryFunction["LLVMConstXor"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstXor_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstZExt"] :=
LLVMLibraryFunction["LLVMConstZExt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstZExt_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMConstZExtOrBitCast"] :=
LLVMLibraryFunction["LLVMConstZExtOrBitCast"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMConstZExtOrBitCast_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMContextCreate"] :=
LLVMLibraryFunction["LLVMContextCreate"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextCreate_Wrapper",
    {

    },
    (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
    Integer
]

LLVMLibraryFunction["LLVMContextDispose"] :=
LLVMLibraryFunction["LLVMContextDispose"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextDispose_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMContextGetDiagnosticContext"] :=
LLVMLibraryFunction["LLVMContextGetDiagnosticContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextGetDiagnosticContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[void *] *)
    Integer
]

LLVMLibraryFunction["LLVMContextGetDiagnosticHandler"] :=
LLVMLibraryFunction["LLVMContextGetDiagnosticHandler"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextGetDiagnosticHandler_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMDiagnosticHandler -> void ( * )(struct LLVMOpaqueDiagnosticInfo *, void * )] *)
    Integer
]

LLVMLibraryFunction["LLVMContextSetDiagnosticHandler"] :=
LLVMLibraryFunction["LLVMContextSetDiagnosticHandler"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextSetDiagnosticHandler_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMDiagnosticHandler -> void ( * )(struct LLVMOpaqueDiagnosticInfo *, void * )] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMContextSetYieldCallback"] :=
LLVMLibraryFunction["LLVMContextSetYieldCallback"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMContextSetYieldCallback_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMYieldCallback -> void ( * )(struct LLVMOpaqueContext *, void * )] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMCountBasicBlocks"] :=
LLVMLibraryFunction["LLVMCountBasicBlocks"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCountBasicBlocks_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCountIncoming"] :=
LLVMLibraryFunction["LLVMCountIncoming"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCountIncoming_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCountParams"] :=
LLVMLibraryFunction["LLVMCountParams"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCountParams_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCountParamTypes"] :=
LLVMLibraryFunction["LLVMCountParamTypes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCountParamTypes_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCountStructElementTypes"] :=
LLVMLibraryFunction["LLVMCountStructElementTypes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCountStructElementTypes_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateBuilder"] :=
LLVMLibraryFunction["LLVMCreateBuilder"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateBuilder_Wrapper",
    {

    },
    (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateBuilderInContext"] :=
LLVMLibraryFunction["LLVMCreateBuilderInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateBuilderInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateEnumAttribute"] :=
LLVMLibraryFunction["LLVMCreateEnumAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateEnumAttribute_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[uint64_t -> unsigned long long] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateFunctionPassManager"] :=
LLVMLibraryFunction["LLVMCreateFunctionPassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateFunctionPassManager_Wrapper",
    {
        (* Type[LLVMModuleProviderRef -> struct LLVMOpaqueModuleProvider *] *)
        Integer
    },
    (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateFunctionPassManagerForModule"] :=
LLVMLibraryFunction["LLVMCreateFunctionPassManagerForModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateFunctionPassManagerForModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMemoryBufferWithContentsOfFile"] :=
LLVMLibraryFunction["LLVMCreateMemoryBufferWithContentsOfFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMemoryBufferWithContentsOfFile_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMMemoryBufferRef * -> struct LLVMOpaqueMemoryBuffer * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMemoryBufferWithMemoryRange"] :=
LLVMLibraryFunction["LLVMCreateMemoryBufferWithMemoryRange"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMemoryBufferWithMemoryRange_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[size_t -> unsigned long] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMemoryBufferWithMemoryRangeCopy"] :=
LLVMLibraryFunction["LLVMCreateMemoryBufferWithMemoryRangeCopy"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMemoryBufferWithMemoryRangeCopy_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[size_t -> unsigned long] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMemoryBufferWithSTDIN"] :=
LLVMLibraryFunction["LLVMCreateMemoryBufferWithSTDIN"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMemoryBufferWithSTDIN_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef * -> struct LLVMOpaqueMemoryBuffer * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMessage"] :=
LLVMLibraryFunction["LLVMCreateMessage"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMessage_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMCreateModuleProviderForExistingModule"] :=
LLVMLibraryFunction["LLVMCreateModuleProviderForExistingModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateModuleProviderForExistingModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMModuleProviderRef -> struct LLVMOpaqueModuleProvider *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreatePassManager"] :=
LLVMLibraryFunction["LLVMCreatePassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreatePassManager_Wrapper",
    {

    },
    (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateStringAttribute"] :=
LLVMLibraryFunction["LLVMCreateStringAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateStringAttribute_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMDeleteBasicBlock"] :=
LLVMLibraryFunction["LLVMDeleteBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDeleteBasicBlock_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDeleteFunction"] :=
LLVMLibraryFunction["LLVMDeleteFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDeleteFunction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDeleteGlobal"] :=
LLVMLibraryFunction["LLVMDeleteGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDeleteGlobal_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeBuilder"] :=
LLVMLibraryFunction["LLVMDisposeBuilder"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeBuilder_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeMemoryBuffer"] :=
LLVMLibraryFunction["LLVMDisposeMemoryBuffer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeMemoryBuffer_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeMessage"] :=
LLVMLibraryFunction["LLVMDisposeMessage"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeMessage_Wrapper",
    {
        (* Type[char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeModule"] :=
LLVMLibraryFunction["LLVMDisposeModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeModuleProvider"] :=
LLVMLibraryFunction["LLVMDisposeModuleProvider"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeModuleProvider_Wrapper",
    {
        (* Type[LLVMModuleProviderRef -> struct LLVMOpaqueModuleProvider *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposePassManager"] :=
LLVMLibraryFunction["LLVMDisposePassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposePassManager_Wrapper",
    {
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDoubleType"] :=
LLVMLibraryFunction["LLVMDoubleType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDoubleType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMDoubleTypeInContext"] :=
LLVMLibraryFunction["LLVMDoubleTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDoubleTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMDumpModule"] :=
LLVMLibraryFunction["LLVMDumpModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDumpModule_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDumpType"] :=
LLVMLibraryFunction["LLVMDumpType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDumpType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDumpValue"] :=
LLVMLibraryFunction["LLVMDumpValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDumpValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMFinalizeFunctionPassManager"] :=
LLVMLibraryFunction["LLVMFinalizeFunctionPassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFinalizeFunctionPassManager_Wrapper",
    {
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMFloatType"] :=
LLVMLibraryFunction["LLVMFloatType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFloatType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMFloatTypeInContext"] :=
LLVMLibraryFunction["LLVMFloatTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFloatTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMFP128Type"] :=
LLVMLibraryFunction["LLVMFP128Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFP128Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMFP128TypeInContext"] :=
LLVMLibraryFunction["LLVMFP128TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFP128TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMFunctionType"] :=
LLVMLibraryFunction["LLVMFunctionType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFunctionType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetAlignment"] :=
LLVMLibraryFunction["LLVMGetAlignment"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAlignment_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetAllocatedType"] :=
LLVMLibraryFunction["LLVMGetAllocatedType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAllocatedType_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetArrayLength"] :=
LLVMLibraryFunction["LLVMGetArrayLength"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetArrayLength_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetAsString"] :=
LLVMLibraryFunction["LLVMGetAsString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAsString_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[size_t * -> unsigned long *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetAttribute"] :=
LLVMLibraryFunction["LLVMGetAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMAttribute -> enum LLVMAttribute] *)
    Integer
]

LLVMLibraryFunction["LLVMGetAttributeCountAtIndex"] :=
LLVMLibraryFunction["LLVMGetAttributeCountAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAttributeCountAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetAttributesAtIndex"] :=
LLVMLibraryFunction["LLVMGetAttributesAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetAttributesAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[LLVMAttributeRef * -> struct LLVMOpaqueAttributeRef * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetBasicBlockName"] :=
LLVMLibraryFunction["LLVMGetBasicBlockName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBasicBlockName_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetBasicBlockParent"] :=
LLVMLibraryFunction["LLVMGetBasicBlockParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBasicBlockParent_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBasicBlocks"] :=
LLVMLibraryFunction["LLVMGetBasicBlocks"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBasicBlocks_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef * -> struct LLVMOpaqueBasicBlock * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetBasicBlockTerminator"] :=
LLVMLibraryFunction["LLVMGetBasicBlockTerminator"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBasicBlockTerminator_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBufferSize"] :=
LLVMLibraryFunction["LLVMGetBufferSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBufferSize_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer
    },
    (* Type[size_t -> unsigned long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetBufferStart"] :=
LLVMLibraryFunction["LLVMGetBufferStart"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetBufferStart_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetCalledValue"] :=
LLVMLibraryFunction["LLVMGetCalledValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCalledValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCallSiteAttributeCount"] :=
LLVMLibraryFunction["LLVMGetCallSiteAttributeCount"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCallSiteAttributeCount_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCallSiteAttributes"] :=
LLVMLibraryFunction["LLVMGetCallSiteAttributes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCallSiteAttributes_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[LLVMAttributeRef * -> struct LLVMOpaqueAttributeRef * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetCallSiteEnumAttribute"] :=
LLVMLibraryFunction["LLVMGetCallSiteEnumAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCallSiteEnumAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCallSiteStringAttribute"] :=
LLVMLibraryFunction["LLVMGetCallSiteStringAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCallSiteStringAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetClause"] :=
LLVMLibraryFunction["LLVMGetClause"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetClause_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCmpXchgFailureOrdering"] :=
LLVMLibraryFunction["LLVMGetCmpXchgFailureOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCmpXchgFailureOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCmpXchgSuccessOrdering"] :=
LLVMLibraryFunction["LLVMGetCmpXchgSuccessOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCmpXchgSuccessOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCondition"] :=
LLVMLibraryFunction["LLVMGetCondition"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCondition_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetConstOpcode"] :=
LLVMLibraryFunction["LLVMGetConstOpcode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetConstOpcode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMOpcode -> enum LLVMOpcode] *)
    Integer
]

LLVMLibraryFunction["LLVMGetCurrentDebugLocation"] :=
LLVMLibraryFunction["LLVMGetCurrentDebugLocation"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetCurrentDebugLocation_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetDataLayout"] :=
LLVMLibraryFunction["LLVMGetDataLayout"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDataLayout_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetDataLayoutStr"] :=
LLVMLibraryFunction["LLVMGetDataLayoutStr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDataLayoutStr_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetDiagInfoDescription"] :=
LLVMLibraryFunction["LLVMGetDiagInfoDescription"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDiagInfoDescription_Wrapper",
    {
        (* Type[LLVMDiagnosticInfoRef -> struct LLVMOpaqueDiagnosticInfo *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetDiagInfoSeverity"] :=
LLVMLibraryFunction["LLVMGetDiagInfoSeverity"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDiagInfoSeverity_Wrapper",
    {
        (* Type[LLVMDiagnosticInfoRef -> struct LLVMOpaqueDiagnosticInfo *] *)
        Integer
    },
    (* Type[LLVMDiagnosticSeverity -> enum LLVMDiagnosticSeverity] *)
    Integer
]

LLVMLibraryFunction["LLVMGetDLLStorageClass"] :=
LLVMLibraryFunction["LLVMGetDLLStorageClass"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDLLStorageClass_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMDLLStorageClass -> enum LLVMDLLStorageClass] *)
    Integer
]

LLVMLibraryFunction["LLVMGetElementAsConstant"] :=
LLVMLibraryFunction["LLVMGetElementAsConstant"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetElementAsConstant_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetElementType"] :=
LLVMLibraryFunction["LLVMGetElementType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetElementType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetEntryBasicBlock"] :=
LLVMLibraryFunction["LLVMGetEntryBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetEntryBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetEnumAttributeAtIndex"] :=
LLVMLibraryFunction["LLVMGetEnumAttributeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetEnumAttributeAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetEnumAttributeKind"] :=
LLVMLibraryFunction["LLVMGetEnumAttributeKind"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetEnumAttributeKind_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetEnumAttributeKindForName"] :=
LLVMLibraryFunction["LLVMGetEnumAttributeKindForName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetEnumAttributeKindForName_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[size_t -> unsigned long] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetEnumAttributeValue"] :=
LLVMLibraryFunction["LLVMGetEnumAttributeValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetEnumAttributeValue_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFCmpPredicate"] :=
LLVMLibraryFunction["LLVMGetFCmpPredicate"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFCmpPredicate_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMRealPredicate -> enum LLVMRealPredicate] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstBasicBlock"] :=
LLVMLibraryFunction["LLVMGetFirstBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstFunction"] :=
LLVMLibraryFunction["LLVMGetFirstFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstFunction_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstGlobal"] :=
LLVMLibraryFunction["LLVMGetFirstGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstGlobal_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstInstruction"] :=
LLVMLibraryFunction["LLVMGetFirstInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstInstruction_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstParam"] :=
LLVMLibraryFunction["LLVMGetFirstParam"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstParam_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFirstUse"] :=
LLVMLibraryFunction["LLVMGetFirstUse"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstUse_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFunctionAttr"] :=
LLVMLibraryFunction["LLVMGetFunctionAttr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFunctionAttr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMAttribute -> enum LLVMAttribute] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFunctionCallConv"] :=
LLVMLibraryFunction["LLVMGetFunctionCallConv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFunctionCallConv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetGC"] :=
LLVMLibraryFunction["LLVMGetGC"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetGC_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetGlobalContext"] :=
LLVMLibraryFunction["LLVMGetGlobalContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetGlobalContext_Wrapper",
    {

    },
    (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetGlobalParent"] :=
LLVMLibraryFunction["LLVMGetGlobalParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetGlobalParent_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetGlobalPassRegistry"] :=
LLVMLibraryFunction["LLVMGetGlobalPassRegistry"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetGlobalPassRegistry_Wrapper",
    {

    },
    (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetICmpPredicate"] :=
LLVMLibraryFunction["LLVMGetICmpPredicate"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetICmpPredicate_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMIntPredicate -> enum LLVMIntPredicate] *)
    Integer
]

LLVMLibraryFunction["LLVMGetIncomingBlock"] :=
LLVMLibraryFunction["LLVMGetIncomingBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetIncomingBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetIncomingValue"] :=
LLVMLibraryFunction["LLVMGetIncomingValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetIncomingValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetIndices"] :=
LLVMLibraryFunction["LLVMGetIndices"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetIndices_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[const unsigned int *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetInitializer"] :=
LLVMLibraryFunction["LLVMGetInitializer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetInitializer_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetInsertBlock"] :=
LLVMLibraryFunction["LLVMGetInsertBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetInsertBlock_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetInstructionCallConv"] :=
LLVMLibraryFunction["LLVMGetInstructionCallConv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetInstructionCallConv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetInstructionOpcode"] :=
LLVMLibraryFunction["LLVMGetInstructionOpcode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetInstructionOpcode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMOpcode -> enum LLVMOpcode] *)
    Integer
]

LLVMLibraryFunction["LLVMGetInstructionParent"] :=
LLVMLibraryFunction["LLVMGetInstructionParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetInstructionParent_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetIntrinsicID"] :=
LLVMLibraryFunction["LLVMGetIntrinsicID"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetIntrinsicID_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetIntTypeWidth"] :=
LLVMLibraryFunction["LLVMGetIntTypeWidth"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetIntTypeWidth_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastBasicBlock"] :=
LLVMLibraryFunction["LLVMGetLastBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastEnumAttributeKind"] :=
LLVMLibraryFunction["LLVMGetLastEnumAttributeKind"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastEnumAttributeKind_Wrapper",
    {

    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastFunction"] :=
LLVMLibraryFunction["LLVMGetLastFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastFunction_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastGlobal"] :=
LLVMLibraryFunction["LLVMGetLastGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastGlobal_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastInstruction"] :=
LLVMLibraryFunction["LLVMGetLastInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastInstruction_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLastParam"] :=
LLVMLibraryFunction["LLVMGetLastParam"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLastParam_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetLinkage"] :=
LLVMLibraryFunction["LLVMGetLinkage"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetLinkage_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMLinkage -> enum LLVMLinkage] *)
    Integer
]

LLVMLibraryFunction["LLVMGetMDKindID"] :=
LLVMLibraryFunction["LLVMGetMDKindID"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMDKindID_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetMDKindIDInContext"] :=
LLVMLibraryFunction["LLVMGetMDKindIDInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMDKindIDInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetMDNodeNumOperands"] :=
LLVMLibraryFunction["LLVMGetMDNodeNumOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMDNodeNumOperands_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetMDNodeOperands"] :=
LLVMLibraryFunction["LLVMGetMDNodeOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMDNodeOperands_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetMDString"] :=
LLVMLibraryFunction["LLVMGetMDString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMDString_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetMetadata"] :=
LLVMLibraryFunction["LLVMGetMetadata"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetMetadata_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetModuleContext"] :=
LLVMLibraryFunction["LLVMGetModuleContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetModuleContext_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetModuleIdentifier"] :=
LLVMLibraryFunction["LLVMGetModuleIdentifier"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetModuleIdentifier_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[size_t * -> unsigned long *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetNamedFunction"] :=
LLVMLibraryFunction["LLVMGetNamedFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNamedFunction_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNamedGlobal"] :=
LLVMLibraryFunction["LLVMGetNamedGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNamedGlobal_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNamedMetadataNumOperands"] :=
LLVMLibraryFunction["LLVMGetNamedMetadataNumOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNamedMetadataNumOperands_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNamedMetadataOperands"] :=
LLVMLibraryFunction["LLVMGetNamedMetadataOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNamedMetadataOperands_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetNextBasicBlock"] :=
LLVMLibraryFunction["LLVMGetNextBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextBasicBlock_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextFunction"] :=
LLVMLibraryFunction["LLVMGetNextFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextFunction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextGlobal"] :=
LLVMLibraryFunction["LLVMGetNextGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextGlobal_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextInstruction"] :=
LLVMLibraryFunction["LLVMGetNextInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextInstruction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextParam"] :=
LLVMLibraryFunction["LLVMGetNextParam"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextParam_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextUse"] :=
LLVMLibraryFunction["LLVMGetNextUse"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextUse_Wrapper",
    {
        (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
        Integer
    },
    (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNormalDest"] :=
LLVMLibraryFunction["LLVMGetNormalDest"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNormalDest_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNumArgOperands"] :=
LLVMLibraryFunction["LLVMGetNumArgOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNumArgOperands_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNumClauses"] :=
LLVMLibraryFunction["LLVMGetNumClauses"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNumClauses_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNumIndices"] :=
LLVMLibraryFunction["LLVMGetNumIndices"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNumIndices_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNumOperands"] :=
LLVMLibraryFunction["LLVMGetNumOperands"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNumOperands_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNumSuccessors"] :=
LLVMLibraryFunction["LLVMGetNumSuccessors"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNumSuccessors_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetOperand"] :=
LLVMLibraryFunction["LLVMGetOperand"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetOperand_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetOperandUse"] :=
LLVMLibraryFunction["LLVMGetOperandUse"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetOperandUse_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetOrdering"] :=
LLVMLibraryFunction["LLVMGetOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
    Integer
]

LLVMLibraryFunction["LLVMGetParam"] :=
LLVMLibraryFunction["LLVMGetParam"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetParam_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetParamParent"] :=
LLVMLibraryFunction["LLVMGetParamParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetParamParent_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetParams"] :=
LLVMLibraryFunction["LLVMGetParams"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetParams_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetParamTypes"] :=
LLVMLibraryFunction["LLVMGetParamTypes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetParamTypes_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetPersonalityFn"] :=
LLVMLibraryFunction["LLVMGetPersonalityFn"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPersonalityFn_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPointerAddressSpace"] :=
LLVMLibraryFunction["LLVMGetPointerAddressSpace"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPointerAddressSpace_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPreviousBasicBlock"] :=
LLVMLibraryFunction["LLVMGetPreviousBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPreviousBasicBlock_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPreviousFunction"] :=
LLVMLibraryFunction["LLVMGetPreviousFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPreviousFunction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPreviousGlobal"] :=
LLVMLibraryFunction["LLVMGetPreviousGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPreviousGlobal_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPreviousInstruction"] :=
LLVMLibraryFunction["LLVMGetPreviousInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPreviousInstruction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPreviousParam"] :=
LLVMLibraryFunction["LLVMGetPreviousParam"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPreviousParam_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetReturnType"] :=
LLVMLibraryFunction["LLVMGetReturnType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetReturnType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSection"] :=
LLVMLibraryFunction["LLVMGetSection"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSection_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetStringAttributeAtIndex"] :=
LLVMLibraryFunction["LLVMGetStringAttributeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetStringAttributeAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetStringAttributeKind"] :=
LLVMLibraryFunction["LLVMGetStringAttributeKind"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetStringAttributeKind_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer,
        (* Type[unsigned int *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetStringAttributeValue"] :=
LLVMLibraryFunction["LLVMGetStringAttributeValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetStringAttributeValue_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer,
        (* Type[unsigned int *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetStructElementTypes"] :=
LLVMLibraryFunction["LLVMGetStructElementTypes"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetStructElementTypes_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetStructName"] :=
LLVMLibraryFunction["LLVMGetStructName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetStructName_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetSuccessor"] :=
LLVMLibraryFunction["LLVMGetSuccessor"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSuccessor_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSwitchDefaultDest"] :=
LLVMLibraryFunction["LLVMGetSwitchDefaultDest"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSwitchDefaultDest_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTarget"] :=
LLVMLibraryFunction["LLVMGetTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTarget_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetThreadLocalMode"] :=
LLVMLibraryFunction["LLVMGetThreadLocalMode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetThreadLocalMode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMThreadLocalMode -> enum LLVMThreadLocalMode] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTypeByName"] :=
LLVMLibraryFunction["LLVMGetTypeByName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTypeByName_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTypeContext"] :=
LLVMLibraryFunction["LLVMGetTypeContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTypeContext_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTypeKind"] :=
LLVMLibraryFunction["LLVMGetTypeKind"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTypeKind_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMTypeKind -> enum LLVMTypeKind] *)
    Integer
]

LLVMLibraryFunction["LLVMGetUndef"] :=
LLVMLibraryFunction["LLVMGetUndef"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetUndef_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetUnwindDest"] :=
LLVMLibraryFunction["LLVMGetUnwindDest"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetUnwindDest_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetUsedValue"] :=
LLVMLibraryFunction["LLVMGetUsedValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetUsedValue_Wrapper",
    {
        (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetUser"] :=
LLVMLibraryFunction["LLVMGetUser"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetUser_Wrapper",
    {
        (* Type[LLVMUseRef -> struct LLVMOpaqueUse *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetValueKind"] :=
LLVMLibraryFunction["LLVMGetValueKind"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetValueKind_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueKind -> enum LLVMValueKind] *)
    Integer
]

LLVMLibraryFunction["LLVMGetValueName"] :=
LLVMLibraryFunction["LLVMGetValueName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetValueName_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetVectorSize"] :=
LLVMLibraryFunction["LLVMGetVectorSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetVectorSize_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetVisibility"] :=
LLVMLibraryFunction["LLVMGetVisibility"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetVisibility_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMVisibility -> enum LLVMVisibility] *)
    Integer
]

LLVMLibraryFunction["LLVMGetVolatile"] :=
LLVMLibraryFunction["LLVMGetVolatile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetVolatile_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMHalfType"] :=
LLVMLibraryFunction["LLVMHalfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMHalfType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMHalfTypeInContext"] :=
LLVMLibraryFunction["LLVMHalfTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMHalfTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMHasMetadata"] :=
LLVMLibraryFunction["LLVMHasMetadata"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMHasMetadata_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMHasPersonalityFn"] :=
LLVMLibraryFunction["LLVMHasPersonalityFn"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMHasPersonalityFn_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMHasUnnamedAddr"] :=
LLVMLibraryFunction["LLVMHasUnnamedAddr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMHasUnnamedAddr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeCore"] :=
LLVMLibraryFunction["LLVMInitializeCore"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeCore_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeFunctionPassManager"] :=
LLVMLibraryFunction["LLVMInitializeFunctionPassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeFunctionPassManager_Wrapper",
    {
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMInsertBasicBlock"] :=
LLVMLibraryFunction["LLVMInsertBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInsertBasicBlock_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMInsertBasicBlockInContext"] :=
LLVMLibraryFunction["LLVMInsertBasicBlockInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInsertBasicBlockInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMInsertIntoBuilder"] :=
LLVMLibraryFunction["LLVMInsertIntoBuilder"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInsertIntoBuilder_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInsertIntoBuilderWithName"] :=
LLVMLibraryFunction["LLVMInsertIntoBuilderWithName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInsertIntoBuilderWithName_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInstructionClone"] :=
LLVMLibraryFunction["LLVMInstructionClone"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInstructionClone_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMInstructionEraseFromParent"] :=
LLVMLibraryFunction["LLVMInstructionEraseFromParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInstructionEraseFromParent_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInstructionRemoveFromParent"] :=
LLVMLibraryFunction["LLVMInstructionRemoveFromParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInstructionRemoveFromParent_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInt128Type"] :=
LLVMLibraryFunction["LLVMInt128Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt128Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt128TypeInContext"] :=
LLVMLibraryFunction["LLVMInt128TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt128TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt16Type"] :=
LLVMLibraryFunction["LLVMInt16Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt16Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt16TypeInContext"] :=
LLVMLibraryFunction["LLVMInt16TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt16TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt1Type"] :=
LLVMLibraryFunction["LLVMInt1Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt1Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt1TypeInContext"] :=
LLVMLibraryFunction["LLVMInt1TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt1TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt32Type"] :=
LLVMLibraryFunction["LLVMInt32Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt32Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt32TypeInContext"] :=
LLVMLibraryFunction["LLVMInt32TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt32TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt64Type"] :=
LLVMLibraryFunction["LLVMInt64Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt64Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt64TypeInContext"] :=
LLVMLibraryFunction["LLVMInt64TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt64TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt8Type"] :=
LLVMLibraryFunction["LLVMInt8Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt8Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMInt8TypeInContext"] :=
LLVMLibraryFunction["LLVMInt8TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInt8TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIntType"] :=
LLVMLibraryFunction["LLVMIntType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntType_Wrapper",
    {
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIntTypeInContext"] :=
LLVMLibraryFunction["LLVMIntTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAAddrSpaceCastInst"] :=
LLVMLibraryFunction["LLVMIsAAddrSpaceCastInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAAddrSpaceCastInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAAllocaInst"] :=
LLVMLibraryFunction["LLVMIsAAllocaInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAAllocaInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAArgument"] :=
LLVMLibraryFunction["LLVMIsAArgument"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAArgument_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsABasicBlock"] :=
LLVMLibraryFunction["LLVMIsABasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsABasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsABinaryOperator"] :=
LLVMLibraryFunction["LLVMIsABinaryOperator"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsABinaryOperator_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsABitCastInst"] :=
LLVMLibraryFunction["LLVMIsABitCastInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsABitCastInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsABlockAddress"] :=
LLVMLibraryFunction["LLVMIsABlockAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsABlockAddress_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsABranchInst"] :=
LLVMLibraryFunction["LLVMIsABranchInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsABranchInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACallInst"] :=
LLVMLibraryFunction["LLVMIsACallInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACallInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACastInst"] :=
LLVMLibraryFunction["LLVMIsACastInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACastInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACatchPadInst"] :=
LLVMLibraryFunction["LLVMIsACatchPadInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACatchPadInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACatchReturnInst"] :=
LLVMLibraryFunction["LLVMIsACatchReturnInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACatchReturnInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACleanupPadInst"] :=
LLVMLibraryFunction["LLVMIsACleanupPadInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACleanupPadInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACleanupReturnInst"] :=
LLVMLibraryFunction["LLVMIsACleanupReturnInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACleanupReturnInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsACmpInst"] :=
LLVMLibraryFunction["LLVMIsACmpInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsACmpInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstant"] :=
LLVMLibraryFunction["LLVMIsAConstant"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstant_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantAggregateZero"] :=
LLVMLibraryFunction["LLVMIsAConstantAggregateZero"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantAggregateZero_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantArray"] :=
LLVMLibraryFunction["LLVMIsAConstantArray"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantArray_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantDataArray"] :=
LLVMLibraryFunction["LLVMIsAConstantDataArray"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantDataArray_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantDataSequential"] :=
LLVMLibraryFunction["LLVMIsAConstantDataSequential"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantDataSequential_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantDataVector"] :=
LLVMLibraryFunction["LLVMIsAConstantDataVector"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantDataVector_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantExpr"] :=
LLVMLibraryFunction["LLVMIsAConstantExpr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantExpr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantFP"] :=
LLVMLibraryFunction["LLVMIsAConstantFP"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantFP_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantInt"] :=
LLVMLibraryFunction["LLVMIsAConstantInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantInt_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantPointerNull"] :=
LLVMLibraryFunction["LLVMIsAConstantPointerNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantPointerNull_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantStruct"] :=
LLVMLibraryFunction["LLVMIsAConstantStruct"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantStruct_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantTokenNone"] :=
LLVMLibraryFunction["LLVMIsAConstantTokenNone"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantTokenNone_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAConstantVector"] :=
LLVMLibraryFunction["LLVMIsAConstantVector"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAConstantVector_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsADbgDeclareInst"] :=
LLVMLibraryFunction["LLVMIsADbgDeclareInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsADbgDeclareInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsADbgInfoIntrinsic"] :=
LLVMLibraryFunction["LLVMIsADbgInfoIntrinsic"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsADbgInfoIntrinsic_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAExtractElementInst"] :=
LLVMLibraryFunction["LLVMIsAExtractElementInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAExtractElementInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAExtractValueInst"] :=
LLVMLibraryFunction["LLVMIsAExtractValueInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAExtractValueInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFCmpInst"] :=
LLVMLibraryFunction["LLVMIsAFCmpInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFCmpInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFPExtInst"] :=
LLVMLibraryFunction["LLVMIsAFPExtInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFPExtInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFPToSIInst"] :=
LLVMLibraryFunction["LLVMIsAFPToSIInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFPToSIInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFPToUIInst"] :=
LLVMLibraryFunction["LLVMIsAFPToUIInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFPToUIInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFPTruncInst"] :=
LLVMLibraryFunction["LLVMIsAFPTruncInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFPTruncInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFuncletPadInst"] :=
LLVMLibraryFunction["LLVMIsAFuncletPadInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFuncletPadInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAFunction"] :=
LLVMLibraryFunction["LLVMIsAFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAFunction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAGetElementPtrInst"] :=
LLVMLibraryFunction["LLVMIsAGetElementPtrInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAGetElementPtrInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAGlobalAlias"] :=
LLVMLibraryFunction["LLVMIsAGlobalAlias"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAGlobalAlias_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAGlobalObject"] :=
LLVMLibraryFunction["LLVMIsAGlobalObject"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAGlobalObject_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAGlobalValue"] :=
LLVMLibraryFunction["LLVMIsAGlobalValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAGlobalValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAGlobalVariable"] :=
LLVMLibraryFunction["LLVMIsAGlobalVariable"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAGlobalVariable_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAICmpInst"] :=
LLVMLibraryFunction["LLVMIsAICmpInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAICmpInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAIndirectBrInst"] :=
LLVMLibraryFunction["LLVMIsAIndirectBrInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAIndirectBrInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAInlineAsm"] :=
LLVMLibraryFunction["LLVMIsAInlineAsm"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAInlineAsm_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAInsertElementInst"] :=
LLVMLibraryFunction["LLVMIsAInsertElementInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAInsertElementInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAInsertValueInst"] :=
LLVMLibraryFunction["LLVMIsAInsertValueInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAInsertValueInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAInstruction"] :=
LLVMLibraryFunction["LLVMIsAInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAInstruction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAIntrinsicInst"] :=
LLVMLibraryFunction["LLVMIsAIntrinsicInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAIntrinsicInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAIntToPtrInst"] :=
LLVMLibraryFunction["LLVMIsAIntToPtrInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAIntToPtrInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAInvokeInst"] :=
LLVMLibraryFunction["LLVMIsAInvokeInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAInvokeInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsALandingPadInst"] :=
LLVMLibraryFunction["LLVMIsALandingPadInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsALandingPadInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsALoadInst"] :=
LLVMLibraryFunction["LLVMIsALoadInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsALoadInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMDNode"] :=
LLVMLibraryFunction["LLVMIsAMDNode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMDNode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMDString"] :=
LLVMLibraryFunction["LLVMIsAMDString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMDString_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMemCpyInst"] :=
LLVMLibraryFunction["LLVMIsAMemCpyInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMemCpyInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMemIntrinsic"] :=
LLVMLibraryFunction["LLVMIsAMemIntrinsic"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMemIntrinsic_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMemMoveInst"] :=
LLVMLibraryFunction["LLVMIsAMemMoveInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMemMoveInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAMemSetInst"] :=
LLVMLibraryFunction["LLVMIsAMemSetInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAMemSetInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAPHINode"] :=
LLVMLibraryFunction["LLVMIsAPHINode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAPHINode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAPtrToIntInst"] :=
LLVMLibraryFunction["LLVMIsAPtrToIntInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAPtrToIntInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAResumeInst"] :=
LLVMLibraryFunction["LLVMIsAResumeInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAResumeInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAReturnInst"] :=
LLVMLibraryFunction["LLVMIsAReturnInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAReturnInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsASelectInst"] :=
LLVMLibraryFunction["LLVMIsASelectInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsASelectInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsASExtInst"] :=
LLVMLibraryFunction["LLVMIsASExtInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsASExtInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAShuffleVectorInst"] :=
LLVMLibraryFunction["LLVMIsAShuffleVectorInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAShuffleVectorInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsASIToFPInst"] :=
LLVMLibraryFunction["LLVMIsASIToFPInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsASIToFPInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAStoreInst"] :=
LLVMLibraryFunction["LLVMIsAStoreInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAStoreInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsASwitchInst"] :=
LLVMLibraryFunction["LLVMIsASwitchInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsASwitchInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsATerminatorInst"] :=
LLVMLibraryFunction["LLVMIsATerminatorInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsATerminatorInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAtomicSingleThread"] :=
LLVMLibraryFunction["LLVMIsAtomicSingleThread"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAtomicSingleThread_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsATruncInst"] :=
LLVMLibraryFunction["LLVMIsATruncInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsATruncInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAUIToFPInst"] :=
LLVMLibraryFunction["LLVMIsAUIToFPInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAUIToFPInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAUnaryInstruction"] :=
LLVMLibraryFunction["LLVMIsAUnaryInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAUnaryInstruction_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAUndefValue"] :=
LLVMLibraryFunction["LLVMIsAUndefValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAUndefValue_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAUnreachableInst"] :=
LLVMLibraryFunction["LLVMIsAUnreachableInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAUnreachableInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAUser"] :=
LLVMLibraryFunction["LLVMIsAUser"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAUser_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAVAArgInst"] :=
LLVMLibraryFunction["LLVMIsAVAArgInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAVAArgInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsAZExtInst"] :=
LLVMLibraryFunction["LLVMIsAZExtInst"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsAZExtInst_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMIsCleanup"] :=
LLVMLibraryFunction["LLVMIsCleanup"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsCleanup_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsConditional"] :=
LLVMLibraryFunction["LLVMIsConditional"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsConditional_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsConstant"] :=
LLVMLibraryFunction["LLVMIsConstant"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsConstant_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsConstantString"] :=
LLVMLibraryFunction["LLVMIsConstantString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsConstantString_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsDeclaration"] :=
LLVMLibraryFunction["LLVMIsDeclaration"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsDeclaration_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsEnumAttribute"] :=
LLVMLibraryFunction["LLVMIsEnumAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsEnumAttribute_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsExternallyInitialized"] :=
LLVMLibraryFunction["LLVMIsExternallyInitialized"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsExternallyInitialized_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsFunctionVarArg"] :=
LLVMLibraryFunction["LLVMIsFunctionVarArg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsFunctionVarArg_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsGlobalConstant"] :=
LLVMLibraryFunction["LLVMIsGlobalConstant"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsGlobalConstant_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsInBounds"] :=
LLVMLibraryFunction["LLVMIsInBounds"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsInBounds_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsMultithreaded"] :=
LLVMLibraryFunction["LLVMIsMultithreaded"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsMultithreaded_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsNull"] :=
LLVMLibraryFunction["LLVMIsNull"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsNull_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsOpaqueStruct"] :=
LLVMLibraryFunction["LLVMIsOpaqueStruct"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsOpaqueStruct_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsPackedStruct"] :=
LLVMLibraryFunction["LLVMIsPackedStruct"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsPackedStruct_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsStringAttribute"] :=
LLVMLibraryFunction["LLVMIsStringAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsStringAttribute_Wrapper",
    {
        (* Type[LLVMAttributeRef -> struct LLVMOpaqueAttributeRef *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsTailCall"] :=
LLVMLibraryFunction["LLVMIsTailCall"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsTailCall_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsThreadLocal"] :=
LLVMLibraryFunction["LLVMIsThreadLocal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsThreadLocal_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsUndef"] :=
LLVMLibraryFunction["LLVMIsUndef"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsUndef_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMLabelType"] :=
LLVMLibraryFunction["LLVMLabelType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLabelType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMLabelTypeInContext"] :=
LLVMLibraryFunction["LLVMLabelTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLabelTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMMDNode"] :=
LLVMLibraryFunction["LLVMMDNode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMDNode_Wrapper",
    {
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMMDNodeInContext"] :=
LLVMLibraryFunction["LLVMMDNodeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMDNodeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMMDString"] :=
LLVMLibraryFunction["LLVMMDString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMDString_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMMDStringInContext"] :=
LLVMLibraryFunction["LLVMMDStringInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMDStringInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMModuleCreateWithName"] :=
LLVMLibraryFunction["LLVMModuleCreateWithName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMModuleCreateWithName_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
    Integer
]

LLVMLibraryFunction["LLVMModuleCreateWithNameInContext"] :=
LLVMLibraryFunction["LLVMModuleCreateWithNameInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMModuleCreateWithNameInContext_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
    Integer
]

LLVMLibraryFunction["LLVMMoveBasicBlockAfter"] :=
LLVMLibraryFunction["LLVMMoveBasicBlockAfter"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveBasicBlockAfter_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMMoveBasicBlockBefore"] :=
LLVMLibraryFunction["LLVMMoveBasicBlockBefore"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveBasicBlockBefore_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMPointerType"] :=
LLVMLibraryFunction["LLVMPointerType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPointerType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMPositionBuilder"] :=
LLVMLibraryFunction["LLVMPositionBuilder"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPositionBuilder_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMPositionBuilderAtEnd"] :=
LLVMLibraryFunction["LLVMPositionBuilderAtEnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPositionBuilderAtEnd_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMPositionBuilderBefore"] :=
LLVMLibraryFunction["LLVMPositionBuilderBefore"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPositionBuilderBefore_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMPPCFP128Type"] :=
LLVMLibraryFunction["LLVMPPCFP128Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPPCFP128Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMPPCFP128TypeInContext"] :=
LLVMLibraryFunction["LLVMPPCFP128TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPPCFP128TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMPrintModuleToFile"] :=
LLVMLibraryFunction["LLVMPrintModuleToFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPrintModuleToFile_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMPrintModuleToString"] :=
LLVMLibraryFunction["LLVMPrintModuleToString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPrintModuleToString_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMPrintTypeToString"] :=
LLVMLibraryFunction["LLVMPrintTypeToString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPrintTypeToString_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMPrintValueToString"] :=
LLVMLibraryFunction["LLVMPrintValueToString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPrintValueToString_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMRemoveAttribute"] :=
LLVMLibraryFunction["LLVMRemoveAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveBasicBlockFromParent"] :=
LLVMLibraryFunction["LLVMRemoveBasicBlockFromParent"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveBasicBlockFromParent_Wrapper",
    {
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveCallSiteEnumAttribute"] :=
LLVMLibraryFunction["LLVMRemoveCallSiteEnumAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveCallSiteEnumAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveCallSiteStringAttribute"] :=
LLVMLibraryFunction["LLVMRemoveCallSiteStringAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveCallSiteStringAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveEnumAttributeAtIndex"] :=
LLVMLibraryFunction["LLVMRemoveEnumAttributeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveEnumAttributeAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveFunctionAttr"] :=
LLVMLibraryFunction["LLVMRemoveFunctionAttr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveFunctionAttr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveInstrAttribute"] :=
LLVMLibraryFunction["LLVMRemoveInstrAttribute"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveInstrAttribute_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMAttribute -> enum LLVMAttribute] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRemoveStringAttributeAtIndex"] :=
LLVMLibraryFunction["LLVMRemoveStringAttributeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveStringAttributeAtIndex_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAttributeIndex -> unsigned int] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMReplaceAllUsesWith"] :=
LLVMLibraryFunction["LLVMReplaceAllUsesWith"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMReplaceAllUsesWith_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRunFunctionPassManager"] :=
LLVMLibraryFunction["LLVMRunFunctionPassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunFunctionPassManager_Wrapper",
    {
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMRunPassManager"] :=
LLVMLibraryFunction["LLVMRunPassManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunPassManager_Wrapper",
    {
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMSetAlignment"] :=
LLVMLibraryFunction["LLVMSetAlignment"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetAlignment_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetAtomicSingleThread"] :=
LLVMLibraryFunction["LLVMSetAtomicSingleThread"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetAtomicSingleThread_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetCleanup"] :=
LLVMLibraryFunction["LLVMSetCleanup"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetCleanup_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetCmpXchgFailureOrdering"] :=
LLVMLibraryFunction["LLVMSetCmpXchgFailureOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetCmpXchgFailureOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetCmpXchgSuccessOrdering"] :=
LLVMLibraryFunction["LLVMSetCmpXchgSuccessOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetCmpXchgSuccessOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetCondition"] :=
LLVMLibraryFunction["LLVMSetCondition"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetCondition_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetCurrentDebugLocation"] :=
LLVMLibraryFunction["LLVMSetCurrentDebugLocation"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetCurrentDebugLocation_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetDataLayout"] :=
LLVMLibraryFunction["LLVMSetDataLayout"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetDataLayout_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetDLLStorageClass"] :=
LLVMLibraryFunction["LLVMSetDLLStorageClass"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetDLLStorageClass_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMDLLStorageClass -> enum LLVMDLLStorageClass] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetExternallyInitialized"] :=
LLVMLibraryFunction["LLVMSetExternallyInitialized"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetExternallyInitialized_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetFunctionCallConv"] :=
LLVMLibraryFunction["LLVMSetFunctionCallConv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetFunctionCallConv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetGC"] :=
LLVMLibraryFunction["LLVMSetGC"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetGC_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetGlobalConstant"] :=
LLVMLibraryFunction["LLVMSetGlobalConstant"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetGlobalConstant_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetInitializer"] :=
LLVMLibraryFunction["LLVMSetInitializer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetInitializer_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetInstDebugLocation"] :=
LLVMLibraryFunction["LLVMSetInstDebugLocation"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetInstDebugLocation_Wrapper",
    {
        (* Type[LLVMBuilderRef -> struct LLVMOpaqueBuilder *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetInstrParamAlignment"] :=
LLVMLibraryFunction["LLVMSetInstrParamAlignment"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetInstrParamAlignment_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetInstructionCallConv"] :=
LLVMLibraryFunction["LLVMSetInstructionCallConv"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetInstructionCallConv_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetIsInBounds"] :=
LLVMLibraryFunction["LLVMSetIsInBounds"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetIsInBounds_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetLinkage"] :=
LLVMLibraryFunction["LLVMSetLinkage"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetLinkage_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMLinkage -> enum LLVMLinkage] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetMetadata"] :=
LLVMLibraryFunction["LLVMSetMetadata"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetMetadata_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetModuleIdentifier"] :=
LLVMLibraryFunction["LLVMSetModuleIdentifier"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetModuleIdentifier_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[size_t -> unsigned long] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetModuleInlineAsm"] :=
LLVMLibraryFunction["LLVMSetModuleInlineAsm"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetModuleInlineAsm_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetNormalDest"] :=
LLVMLibraryFunction["LLVMSetNormalDest"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetNormalDest_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetOperand"] :=
LLVMLibraryFunction["LLVMSetOperand"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetOperand_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetOrdering"] :=
LLVMLibraryFunction["LLVMSetOrdering"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetOrdering_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMAtomicOrdering -> enum LLVMAtomicOrdering] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetParamAlignment"] :=
LLVMLibraryFunction["LLVMSetParamAlignment"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetParamAlignment_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetPersonalityFn"] :=
LLVMLibraryFunction["LLVMSetPersonalityFn"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetPersonalityFn_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetSection"] :=
LLVMLibraryFunction["LLVMSetSection"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetSection_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetSuccessor"] :=
LLVMLibraryFunction["LLVMSetSuccessor"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetSuccessor_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetTailCall"] :=
LLVMLibraryFunction["LLVMSetTailCall"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetTailCall_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetTarget"] :=
LLVMLibraryFunction["LLVMSetTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetTarget_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetThreadLocal"] :=
LLVMLibraryFunction["LLVMSetThreadLocal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetThreadLocal_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetThreadLocalMode"] :=
LLVMLibraryFunction["LLVMSetThreadLocalMode"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetThreadLocalMode_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMThreadLocalMode -> enum LLVMThreadLocalMode] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetUnnamedAddr"] :=
LLVMLibraryFunction["LLVMSetUnnamedAddr"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetUnnamedAddr_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetUnwindDest"] :=
LLVMLibraryFunction["LLVMSetUnwindDest"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetUnwindDest_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetValueName"] :=
LLVMLibraryFunction["LLVMSetValueName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetValueName_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetVisibility"] :=
LLVMLibraryFunction["LLVMSetVisibility"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetVisibility_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMVisibility -> enum LLVMVisibility] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSetVolatile"] :=
LLVMLibraryFunction["LLVMSetVolatile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetVolatile_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMShutdown"] :=
LLVMLibraryFunction["LLVMShutdown"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMShutdown_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSizeOf"] :=
LLVMLibraryFunction["LLVMSizeOf"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSizeOf_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMStartMultithreaded"] :=
LLVMLibraryFunction["LLVMStartMultithreaded"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStartMultithreaded_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMStopMultithreaded"] :=
LLVMLibraryFunction["LLVMStopMultithreaded"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStopMultithreaded_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMStructCreateNamed"] :=
LLVMLibraryFunction["LLVMStructCreateNamed"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStructCreateNamed_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMStructGetTypeAtIndex"] :=
LLVMLibraryFunction["LLVMStructGetTypeAtIndex"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStructGetTypeAtIndex_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMStructSetBody"] :=
LLVMLibraryFunction["LLVMStructSetBody"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStructSetBody_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMStructType"] :=
LLVMLibraryFunction["LLVMStructType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStructType_Wrapper",
    {
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMStructTypeInContext"] :=
LLVMLibraryFunction["LLVMStructTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStructTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMTypeRef * -> struct LLVMOpaqueType * *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMTypeIsSized"] :=
LLVMLibraryFunction["LLVMTypeIsSized"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTypeIsSized_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMTypeOf"] :=
LLVMLibraryFunction["LLVMTypeOf"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTypeOf_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMValueAsBasicBlock"] :=
LLVMLibraryFunction["LLVMValueAsBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMValueAsBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBasicBlockRef -> struct LLVMOpaqueBasicBlock *] *)
    Integer
]

LLVMLibraryFunction["LLVMValueIsBasicBlock"] :=
LLVMLibraryFunction["LLVMValueIsBasicBlock"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMValueIsBasicBlock_Wrapper",
    {
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMVectorType"] :=
LLVMLibraryFunction["LLVMVectorType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMVectorType_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMVoidType"] :=
LLVMLibraryFunction["LLVMVoidType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMVoidType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMVoidTypeInContext"] :=
LLVMLibraryFunction["LLVMVoidTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMVoidTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMX86FP80Type"] :=
LLVMLibraryFunction["LLVMX86FP80Type"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMX86FP80Type_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMX86FP80TypeInContext"] :=
LLVMLibraryFunction["LLVMX86FP80TypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMX86FP80TypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMX86MMXType"] :=
LLVMLibraryFunction["LLVMX86MMXType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMX86MMXType_Wrapper",
    {

    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMX86MMXTypeInContext"] :=
LLVMLibraryFunction["LLVMX86MMXTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMX86MMXTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateDisasm"] :=
LLVMLibraryFunction["LLVMCreateDisasm"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateDisasm_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[void *] *)
        Integer,
        (* Type[int] *)
        Integer,
        (* Type[LLVMOpInfoCallback -> int ( * )(void *, unsigned long long, unsigned long long, unsigned long long, int, void * )] *)
        Integer,
        (* Type[LLVMSymbolLookupCallback -> const char * ( * )(void *, unsigned long long, unsigned long long *, unsigned long long, const char ** )] *)
        Integer
    },
    (* Type[LLVMDisasmContextRef -> void *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateDisasmCPU"] :=
LLVMLibraryFunction["LLVMCreateDisasmCPU"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateDisasmCPU_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[void *] *)
        Integer,
        (* Type[int] *)
        Integer,
        (* Type[LLVMOpInfoCallback -> int ( * )(void *, unsigned long long, unsigned long long, unsigned long long, int, void * )] *)
        Integer,
        (* Type[LLVMSymbolLookupCallback -> const char * ( * )(void *, unsigned long long, unsigned long long *, unsigned long long, const char ** )] *)
        Integer
    },
    (* Type[LLVMDisasmContextRef -> void *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateDisasmCPUFeatures"] :=
LLVMLibraryFunction["LLVMCreateDisasmCPUFeatures"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateDisasmCPUFeatures_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[void *] *)
        Integer,
        (* Type[int] *)
        Integer,
        (* Type[LLVMOpInfoCallback -> int ( * )(void *, unsigned long long, unsigned long long, unsigned long long, int, void * )] *)
        Integer,
        (* Type[LLVMSymbolLookupCallback -> const char * ( * )(void *, unsigned long long, unsigned long long *, unsigned long long, const char ** )] *)
        Integer
    },
    (* Type[LLVMDisasmContextRef -> void *] *)
    Integer
]

LLVMLibraryFunction["LLVMDisasmDispose"] :=
LLVMLibraryFunction["LLVMDisasmDispose"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisasmDispose_Wrapper",
    {
        (* Type[LLVMDisasmContextRef -> void *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisasmInstruction"] :=
LLVMLibraryFunction["LLVMDisasmInstruction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisasmInstruction_Wrapper",
    {
        (* Type[LLVMDisasmContextRef -> void *] *)
        Integer,
        (* Type[uint8_t * -> unsigned char *] *)
        Integer,
        (* Type[uint64_t -> unsigned long long] *)
        Integer,
        (* Type[uint64_t -> unsigned long long] *)
        Integer,
        (* Type[char *] *)
        "UTF8String",
        (* Type[size_t -> unsigned long] *)
        Integer
    },
    (* Type[size_t -> unsigned long] *)
    Integer
]

LLVMLibraryFunction["LLVMSetDisasmOptions"] :=
LLVMLibraryFunction["LLVMSetDisasmOptions"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetDisasmOptions_Wrapper",
    {
        (* Type[LLVMDisasmContextRef -> void *] *)
        Integer,
        (* Type[uint64_t -> unsigned long long] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMEnablePrettyStackTrace"] :=
LLVMLibraryFunction["LLVMEnablePrettyStackTrace"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMEnablePrettyStackTrace_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInstallFatalErrorHandler"] :=
LLVMLibraryFunction["LLVMInstallFatalErrorHandler"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInstallFatalErrorHandler_Wrapper",
    {
        (* Type[LLVMFatalErrorHandler -> void ( * )(const char * )] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMResetFatalErrorHandler"] :=
LLVMLibraryFunction["LLVMResetFatalErrorHandler"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMResetFatalErrorHandler_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddGlobalMapping"] :=
LLVMLibraryFunction["LLVMAddGlobalMapping"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddGlobalMapping_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMAddModule"] :=
LLVMLibraryFunction["LLVMAddModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMCreateExecutionEngineForModule"] :=
LLVMLibraryFunction["LLVMCreateExecutionEngineForModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateExecutionEngineForModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef * -> struct LLVMOpaqueExecutionEngine * *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateGenericValueOfFloat"] :=
LLVMLibraryFunction["LLVMCreateGenericValueOfFloat"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateGenericValueOfFloat_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[double] *)
        Real
    },
    (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateGenericValueOfInt"] :=
LLVMLibraryFunction["LLVMCreateGenericValueOfInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateGenericValueOfInt_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned long long] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateGenericValueOfPointer"] :=
LLVMLibraryFunction["LLVMCreateGenericValueOfPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateGenericValueOfPointer_Wrapper",
    {
        (* Type[void *] *)
        Integer
    },
    (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateInterpreterForModule"] :=
LLVMLibraryFunction["LLVMCreateInterpreterForModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateInterpreterForModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef * -> struct LLVMOpaqueExecutionEngine * *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateJITCompilerForModule"] :=
LLVMLibraryFunction["LLVMCreateJITCompilerForModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateJITCompilerForModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef * -> struct LLVMOpaqueExecutionEngine * *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateMCJITCompilerForModule"] :=
LLVMLibraryFunction["LLVMCreateMCJITCompilerForModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateMCJITCompilerForModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef * -> struct LLVMOpaqueExecutionEngine * *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[struct LLVMMCJITCompilerOptions *] *)
        Integer,
        (* Type[size_t -> unsigned long] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateSimpleMCJITMemoryManager"] :=
LLVMLibraryFunction["LLVMCreateSimpleMCJITMemoryManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateSimpleMCJITMemoryManager_Wrapper",
    {
        (* Type[void *] *)
        Integer,
        (* Type[LLVMMemoryManagerAllocateCodeSectionCallback -> unsigned char * ( * )(void *, unsigned long, unsigned int, unsigned int, const char * )] *)
        Integer,
        (* Type[LLVMMemoryManagerAllocateDataSectionCallback -> unsigned char * ( * )(void *, unsigned long, unsigned int, unsigned int, const char *, int)] *)
        Integer,
        (* Type[LLVMMemoryManagerFinalizeMemoryCallback -> int ( * )(void *, char ** )] *)
        Integer,
        (* Type[LLVMMemoryManagerDestroyCallback -> void ( * )(void * )] *)
        Integer
    },
    (* Type[LLVMMCJITMemoryManagerRef -> struct LLVMOpaqueMCJITMemoryManager *] *)
    Integer
]

LLVMLibraryFunction["LLVMDisposeExecutionEngine"] :=
LLVMLibraryFunction["LLVMDisposeExecutionEngine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeExecutionEngine_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeGenericValue"] :=
LLVMLibraryFunction["LLVMDisposeGenericValue"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeGenericValue_Wrapper",
    {
        (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeMCJITMemoryManager"] :=
LLVMLibraryFunction["LLVMDisposeMCJITMemoryManager"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeMCJITMemoryManager_Wrapper",
    {
        (* Type[LLVMMCJITMemoryManagerRef -> struct LLVMOpaqueMCJITMemoryManager *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMFindFunction"] :=
LLVMLibraryFunction["LLVMFindFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFindFunction_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMValueRef * -> struct LLVMOpaqueValue * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMFreeMachineCodeForFunction"] :=
LLVMLibraryFunction["LLVMFreeMachineCodeForFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMFreeMachineCodeForFunction_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGenericValueIntWidth"] :=
LLVMLibraryFunction["LLVMGenericValueIntWidth"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGenericValueIntWidth_Wrapper",
    {
        (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGenericValueToFloat"] :=
LLVMLibraryFunction["LLVMGenericValueToFloat"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGenericValueToFloat_Wrapper",
    {
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
        Integer
    },
    (* Type[double] *)
    Real
]

LLVMLibraryFunction["LLVMGenericValueToInt"] :=
LLVMLibraryFunction["LLVMGenericValueToInt"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGenericValueToInt_Wrapper",
    {
        (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGenericValueToPointer"] :=
LLVMLibraryFunction["LLVMGenericValueToPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGenericValueToPointer_Wrapper",
    {
        (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
        Integer
    },
    (* Type[void *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetExecutionEngineTargetData"] :=
LLVMLibraryFunction["LLVMGetExecutionEngineTargetData"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetExecutionEngineTargetData_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer
    },
    (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetExecutionEngineTargetMachine"] :=
LLVMLibraryFunction["LLVMGetExecutionEngineTargetMachine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetExecutionEngineTargetMachine_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer
    },
    (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetFunctionAddress"] :=
LLVMLibraryFunction["LLVMGetFunctionAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFunctionAddress_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetGlobalValueAddress"] :=
LLVMLibraryFunction["LLVMGetGlobalValueAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetGlobalValueAddress_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetPointerToGlobal"] :=
LLVMLibraryFunction["LLVMGetPointerToGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetPointerToGlobal_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void *] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeMCJITCompilerOptions"] :=
LLVMLibraryFunction["LLVMInitializeMCJITCompilerOptions"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeMCJITCompilerOptions_Wrapper",
    {
        (* Type[struct LLVMMCJITCompilerOptions *] *)
        Integer,
        (* Type[size_t -> unsigned long] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMLinkInInterpreter"] :=
LLVMLibraryFunction["LLVMLinkInInterpreter"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLinkInInterpreter_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMLinkInMCJIT"] :=
LLVMLibraryFunction["LLVMLinkInMCJIT"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLinkInMCJIT_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRecompileAndRelinkFunction"] :=
LLVMLibraryFunction["LLVMRecompileAndRelinkFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRecompileAndRelinkFunction_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[void *] *)
    Integer
]

LLVMLibraryFunction["LLVMRemoveModule"] :=
LLVMLibraryFunction["LLVMRemoveModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRemoveModule_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMRunFunction"] :=
LLVMLibraryFunction["LLVMRunFunction"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunFunction_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[LLVMGenericValueRef * -> struct LLVMOpaqueGenericValue * *] *)
        Integer
    },
    (* Type[LLVMGenericValueRef -> struct LLVMOpaqueGenericValue *] *)
    Integer
]

LLVMLibraryFunction["LLVMRunFunctionAsMain"] :=
LLVMLibraryFunction["LLVMRunFunctionAsMain"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunFunctionAsMain_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer,
        (* Type[const char *const *] *)
        Integer,
        (* Type[const char *const *] *)
        Integer
    },
    (* Type[int] *)
    Integer
]

LLVMLibraryFunction["LLVMRunStaticConstructors"] :=
LLVMLibraryFunction["LLVMRunStaticConstructors"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunStaticConstructors_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMRunStaticDestructors"] :=
LLVMLibraryFunction["LLVMRunStaticDestructors"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMRunStaticDestructors_Wrapper",
    {
        (* Type[LLVMExecutionEngineRef -> struct LLVMOpaqueExecutionEngine *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAnalysis"] :=
LLVMLibraryFunction["LLVMInitializeAnalysis"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAnalysis_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeCodeGen"] :=
LLVMLibraryFunction["LLVMInitializeCodeGen"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeCodeGen_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeInstCombine"] :=
LLVMLibraryFunction["LLVMInitializeInstCombine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeInstCombine_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeInstrumentation"] :=
LLVMLibraryFunction["LLVMInitializeInstrumentation"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeInstrumentation_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeIPA"] :=
LLVMLibraryFunction["LLVMInitializeIPA"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeIPA_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeIPO"] :=
LLVMLibraryFunction["LLVMInitializeIPO"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeIPO_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeObjCARCOpts"] :=
LLVMLibraryFunction["LLVMInitializeObjCARCOpts"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeObjCARCOpts_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeScalarOpts"] :=
LLVMLibraryFunction["LLVMInitializeScalarOpts"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeScalarOpts_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeTarget"] :=
LLVMLibraryFunction["LLVMInitializeTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeTarget_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeTransformUtils"] :=
LLVMLibraryFunction["LLVMInitializeTransformUtils"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeTransformUtils_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeVectorization"] :=
LLVMLibraryFunction["LLVMInitializeVectorization"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeVectorization_Wrapper",
    {
        (* Type[LLVMPassRegistryRef -> struct LLVMOpaquePassRegistry *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMParseIRInContext"] :=
LLVMLibraryFunction["LLVMParseIRInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseIRInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer,
        (* Type[LLVMModuleRef * -> struct LLVMOpaqueModule * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMLinkModules2"] :=
LLVMLibraryFunction["LLVMLinkModules2"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLinkModules2_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateObjectFile"] :=
LLVMLibraryFunction["LLVMCreateObjectFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateObjectFile_Wrapper",
    {
        (* Type[LLVMMemoryBufferRef -> struct LLVMOpaqueMemoryBuffer *] *)
        Integer
    },
    (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
    Integer
]

LLVMLibraryFunction["LLVMDisposeObjectFile"] :=
LLVMLibraryFunction["LLVMDisposeObjectFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeObjectFile_Wrapper",
    {
        (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeRelocationIterator"] :=
LLVMLibraryFunction["LLVMDisposeRelocationIterator"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeRelocationIterator_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeSectionIterator"] :=
LLVMLibraryFunction["LLVMDisposeSectionIterator"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeSectionIterator_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMDisposeSymbolIterator"] :=
LLVMLibraryFunction["LLVMDisposeSymbolIterator"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeSymbolIterator_Wrapper",
    {
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetRelocationOffset"] :=
LLVMLibraryFunction["LLVMGetRelocationOffset"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocationOffset_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetRelocations"] :=
LLVMLibraryFunction["LLVMGetRelocations"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocations_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetRelocationSymbol"] :=
LLVMLibraryFunction["LLVMGetRelocationSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocationSymbol_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetRelocationType"] :=
LLVMLibraryFunction["LLVMGetRelocationType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocationType_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetRelocationTypeName"] :=
LLVMLibraryFunction["LLVMGetRelocationTypeName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocationTypeName_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetRelocationValueString"] :=
LLVMLibraryFunction["LLVMGetRelocationValueString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetRelocationValueString_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetSectionAddress"] :=
LLVMLibraryFunction["LLVMGetSectionAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSectionAddress_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSectionContainsSymbol"] :=
LLVMLibraryFunction["LLVMGetSectionContainsSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSectionContainsSymbol_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer,
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSectionContents"] :=
LLVMLibraryFunction["LLVMGetSectionContents"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSectionContents_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetSectionName"] :=
LLVMLibraryFunction["LLVMGetSectionName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSectionName_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetSections"] :=
LLVMLibraryFunction["LLVMGetSections"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSections_Wrapper",
    {
        (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
        Integer
    },
    (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSectionSize"] :=
LLVMLibraryFunction["LLVMGetSectionSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSectionSize_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSymbolAddress"] :=
LLVMLibraryFunction["LLVMGetSymbolAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSymbolAddress_Wrapper",
    {
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSymbolName"] :=
LLVMLibraryFunction["LLVMGetSymbolName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSymbolName_Wrapper",
    {
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetSymbols"] :=
LLVMLibraryFunction["LLVMGetSymbols"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSymbols_Wrapper",
    {
        (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
        Integer
    },
    (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetSymbolSize"] :=
LLVMLibraryFunction["LLVMGetSymbolSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetSymbolSize_Wrapper",
    {
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[uint64_t -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMIsRelocationIteratorAtEnd"] :=
LLVMLibraryFunction["LLVMIsRelocationIteratorAtEnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsRelocationIteratorAtEnd_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer,
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsSectionIteratorAtEnd"] :=
LLVMLibraryFunction["LLVMIsSectionIteratorAtEnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsSectionIteratorAtEnd_Wrapper",
    {
        (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
        Integer,
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIsSymbolIteratorAtEnd"] :=
LLVMLibraryFunction["LLVMIsSymbolIteratorAtEnd"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIsSymbolIteratorAtEnd_Wrapper",
    {
        (* Type[LLVMObjectFileRef -> struct LLVMOpaqueObjectFile *] *)
        Integer,
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMMoveToContainingSection"] :=
LLVMLibraryFunction["LLVMMoveToContainingSection"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveToContainingSection_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer,
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMMoveToNextRelocation"] :=
LLVMLibraryFunction["LLVMMoveToNextRelocation"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveToNextRelocation_Wrapper",
    {
        (* Type[LLVMRelocationIteratorRef -> struct LLVMOpaqueRelocationIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMMoveToNextSection"] :=
LLVMLibraryFunction["LLVMMoveToNextSection"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveToNextSection_Wrapper",
    {
        (* Type[LLVMSectionIteratorRef -> struct LLVMOpaqueSectionIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMMoveToNextSymbol"] :=
LLVMLibraryFunction["LLVMMoveToNextSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMMoveToNextSymbol_Wrapper",
    {
        (* Type[LLVMSymbolIteratorRef -> struct LLVMOpaqueSymbolIterator *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMOrcAddEagerlyCompiledIR"] :=
LLVMLibraryFunction["LLVMOrcAddEagerlyCompiledIR"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcAddEagerlyCompiledIR_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMOrcSymbolResolverFn -> unsigned long long ( * )(const char *, void * )] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[LLVMOrcModuleHandle -> unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcAddLazilyCompiledIR"] :=
LLVMLibraryFunction["LLVMOrcAddLazilyCompiledIR"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcAddLazilyCompiledIR_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMOrcSymbolResolverFn -> unsigned long long ( * )(const char *, void * )] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[LLVMOrcModuleHandle -> unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcCreateIndirectStub"] :=
LLVMLibraryFunction["LLVMOrcCreateIndirectStub"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcCreateIndirectStub_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMOrcTargetAddress -> unsigned long long] *)
        Integer
    },
    (* Type[LLVMOrcErrorCode -> enum LLVMOrcErrorCode] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcCreateInstance"] :=
LLVMLibraryFunction["LLVMOrcCreateInstance"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcCreateInstance_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcCreateLazyCompileCallback"] :=
LLVMLibraryFunction["LLVMOrcCreateLazyCompileCallback"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcCreateLazyCompileCallback_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[LLVMOrcLazyCompileCallbackFn -> unsigned long long ( * )(struct LLVMOrcOpaqueJITStack *, void * )] *)
        Integer,
        (* Type[void *] *)
        Integer
    },
    (* Type[LLVMOrcTargetAddress -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcDisposeInstance"] :=
LLVMLibraryFunction["LLVMOrcDisposeInstance"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcDisposeInstance_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMOrcDisposeMangledSymbol"] :=
LLVMLibraryFunction["LLVMOrcDisposeMangledSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcDisposeMangledSymbol_Wrapper",
    {
        (* Type[char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMOrcGetErrorMsg"] :=
LLVMLibraryFunction["LLVMOrcGetErrorMsg"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcGetErrorMsg_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMOrcGetMangledSymbol"] :=
LLVMLibraryFunction["LLVMOrcGetMangledSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcGetMangledSymbol_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[char **] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMOrcGetSymbolAddress"] :=
LLVMLibraryFunction["LLVMOrcGetSymbolAddress"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcGetSymbolAddress_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMOrcTargetAddress -> unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMOrcRemoveModule"] :=
LLVMLibraryFunction["LLVMOrcRemoveModule"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcRemoveModule_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[LLVMOrcModuleHandle -> unsigned int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMOrcSetIndirectStubPointer"] :=
LLVMLibraryFunction["LLVMOrcSetIndirectStubPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOrcSetIndirectStubPointer_Wrapper",
    {
        (* Type[LLVMOrcJITStackRef -> struct LLVMOrcOpaqueJITStack *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMOrcTargetAddress -> unsigned long long] *)
        Integer
    },
    (* Type[LLVMOrcErrorCode -> enum LLVMOrcErrorCode] *)
    Integer
]

LLVMLibraryFunction["LLVMAddSymbol"] :=
LLVMLibraryFunction["LLVMAddSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddSymbol_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[void *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMLoadLibraryPermanently"] :=
LLVMLibraryFunction["LLVMLoadLibraryPermanently"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMLoadLibraryPermanently_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMParseCommandLineOptions"] :=
LLVMLibraryFunction["LLVMParseCommandLineOptions"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMParseCommandLineOptions_Wrapper",
    {
        (* Type[int] *)
        Integer,
        (* Type[const char *const *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSearchForAddressOfSymbol"] :=
LLVMLibraryFunction["LLVMSearchForAddressOfSymbol"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSearchForAddressOfSymbol_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[void *] *)
    Integer
]

LLVMLibraryFunction["LLVMABIAlignmentOfType"] :=
LLVMLibraryFunction["LLVMABIAlignmentOfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMABIAlignmentOfType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMABISizeOfType"] :=
LLVMLibraryFunction["LLVMABISizeOfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMABISizeOfType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMAddTargetLibraryInfo"] :=
LLVMLibraryFunction["LLVMAddTargetLibraryInfo"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddTargetLibraryInfo_Wrapper",
    {
        (* Type[LLVMTargetLibraryInfoRef -> struct LLVMOpaqueTargetLibraryInfotData *] *)
        Integer,
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMByteOrder"] :=
LLVMLibraryFunction["LLVMByteOrder"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMByteOrder_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[LLVMByteOrdering -> enum LLVMByteOrdering] *)
    Integer
]

LLVMLibraryFunction["LLVMCallFrameAlignmentOfType"] :=
LLVMLibraryFunction["LLVMCallFrameAlignmentOfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCallFrameAlignmentOfType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMCopyStringRepOfTargetData"] :=
LLVMLibraryFunction["LLVMCopyStringRepOfTargetData"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCopyStringRepOfTargetData_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMCreateTargetData"] :=
LLVMLibraryFunction["LLVMCreateTargetData"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateTargetData_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
    Integer
]

LLVMLibraryFunction["LLVMDisposeTargetData"] :=
LLVMLibraryFunction["LLVMDisposeTargetData"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeTargetData_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMElementAtOffset"] :=
LLVMLibraryFunction["LLVMElementAtOffset"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMElementAtOffset_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned long long] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetModuleDataLayout"] :=
LLVMLibraryFunction["LLVMGetModuleDataLayout"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetModuleDataLayout_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer
    },
    (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeAllAsmParsers"] :=
LLVMLibraryFunction["LLVMInitializeAllAsmParsers"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllAsmParsers_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAllAsmPrinters"] :=
LLVMLibraryFunction["LLVMInitializeAllAsmPrinters"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllAsmPrinters_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAllDisassemblers"] :=
LLVMLibraryFunction["LLVMInitializeAllDisassemblers"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllDisassemblers_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAllTargetInfos"] :=
LLVMLibraryFunction["LLVMInitializeAllTargetInfos"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllTargetInfos_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAllTargetMCs"] :=
LLVMLibraryFunction["LLVMInitializeAllTargetMCs"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllTargetMCs_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeAllTargets"] :=
LLVMLibraryFunction["LLVMInitializeAllTargets"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeAllTargets_Wrapper",
    {

    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMInitializeNativeAsmParser"] :=
LLVMLibraryFunction["LLVMInitializeNativeAsmParser"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeNativeAsmParser_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeNativeAsmPrinter"] :=
LLVMLibraryFunction["LLVMInitializeNativeAsmPrinter"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeNativeAsmPrinter_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeNativeDisassembler"] :=
LLVMLibraryFunction["LLVMInitializeNativeDisassembler"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeNativeDisassembler_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMInitializeNativeTarget"] :=
LLVMLibraryFunction["LLVMInitializeNativeTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMInitializeNativeTarget_Wrapper",
    {

    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMIntPtrType"] :=
LLVMLibraryFunction["LLVMIntPtrType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntPtrType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIntPtrTypeForAS"] :=
LLVMLibraryFunction["LLVMIntPtrTypeForAS"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntPtrTypeForAS_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIntPtrTypeForASInContext"] :=
LLVMLibraryFunction["LLVMIntPtrTypeForASInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntPtrTypeForASInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMIntPtrTypeInContext"] :=
LLVMLibraryFunction["LLVMIntPtrTypeInContext"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMIntPtrTypeInContext_Wrapper",
    {
        (* Type[LLVMContextRef -> struct LLVMOpaqueContext *] *)
        Integer,
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
    Integer
]

LLVMLibraryFunction["LLVMOffsetOfElement"] :=
LLVMLibraryFunction["LLVMOffsetOfElement"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMOffsetOfElement_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMPointerSize"] :=
LLVMLibraryFunction["LLVMPointerSize"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPointerSize_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMPointerSizeForAS"] :=
LLVMLibraryFunction["LLVMPointerSizeForAS"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPointerSizeForAS_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[unsigned int] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMPreferredAlignmentOfGlobal"] :=
LLVMLibraryFunction["LLVMPreferredAlignmentOfGlobal"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPreferredAlignmentOfGlobal_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMValueRef -> struct LLVMOpaqueValue *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMPreferredAlignmentOfType"] :=
LLVMLibraryFunction["LLVMPreferredAlignmentOfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMPreferredAlignmentOfType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned int] *)
    Integer
]

LLVMLibraryFunction["LLVMSetModuleDataLayout"] :=
LLVMLibraryFunction["LLVMSetModuleDataLayout"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetModuleDataLayout_Wrapper",
    {
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMSizeOfTypeInBits"] :=
LLVMLibraryFunction["LLVMSizeOfTypeInBits"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSizeOfTypeInBits_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMStoreSizeOfType"] :=
LLVMLibraryFunction["LLVMStoreSizeOfType"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMStoreSizeOfType_Wrapper",
    {
        (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
        Integer,
        (* Type[LLVMTypeRef -> struct LLVMOpaqueType *] *)
        Integer
    },
    (* Type[unsigned long long] *)
    Integer
]

LLVMLibraryFunction["LLVMAddAnalysisPasses"] :=
LLVMLibraryFunction["LLVMAddAnalysisPasses"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMAddAnalysisPasses_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer,
        (* Type[LLVMPassManagerRef -> struct LLVMOpaquePassManager *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMCreateTargetDataLayout"] :=
LLVMLibraryFunction["LLVMCreateTargetDataLayout"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateTargetDataLayout_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[LLVMTargetDataRef -> struct LLVMOpaqueTargetData *] *)
    Integer
]

LLVMLibraryFunction["LLVMCreateTargetMachine"] :=
LLVMLibraryFunction["LLVMCreateTargetMachine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMCreateTargetMachine_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer,
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMCodeGenOptLevel -> enum LLVMCodeGenOptLevel] *)
        Integer,
        (* Type[LLVMRelocMode -> enum LLVMRelocMode] *)
        Integer,
        (* Type[LLVMCodeModel -> enum LLVMCodeModel] *)
        Integer
    },
    (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
    Integer
]

LLVMLibraryFunction["LLVMDisposeTargetMachine"] :=
LLVMLibraryFunction["LLVMDisposeTargetMachine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMDisposeTargetMachine_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMGetDefaultTargetTriple"] :=
LLVMLibraryFunction["LLVMGetDefaultTargetTriple"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetDefaultTargetTriple_Wrapper",
    {

    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetFirstTarget"] :=
LLVMLibraryFunction["LLVMGetFirstTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetFirstTarget_Wrapper",
    {

    },
    (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetNextTarget"] :=
LLVMLibraryFunction["LLVMGetNextTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetNextTarget_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTargetDescription"] :=
LLVMLibraryFunction["LLVMGetTargetDescription"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetDescription_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetTargetFromName"] :=
LLVMLibraryFunction["LLVMGetTargetFromName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetFromName_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String"
    },
    (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTargetFromTriple"] :=
LLVMLibraryFunction["LLVMGetTargetFromTriple"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetFromTriple_Wrapper",
    {
        (* Type[const char *] *)
        "UTF8String",
        (* Type[LLVMTargetRef * -> struct LLVMTarget * *] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTargetMachineCPU"] :=
LLVMLibraryFunction["LLVMGetTargetMachineCPU"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetMachineCPU_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetTargetMachineFeatureString"] :=
LLVMLibraryFunction["LLVMGetTargetMachineFeatureString"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetMachineFeatureString_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetTargetMachineTarget"] :=
LLVMLibraryFunction["LLVMGetTargetMachineTarget"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetMachineTarget_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
    Integer
]

LLVMLibraryFunction["LLVMGetTargetMachineTriple"] :=
LLVMLibraryFunction["LLVMGetTargetMachineTriple"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetMachineTriple_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer
    },
    (* Type[char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMGetTargetName"] :=
LLVMLibraryFunction["LLVMGetTargetName"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMGetTargetName_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[const char *] *)
    "UTF8String"
]

LLVMLibraryFunction["LLVMSetTargetMachineAsmVerbosity"] :=
LLVMLibraryFunction["LLVMSetTargetMachineAsmVerbosity"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMSetTargetMachineAsmVerbosity_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer,
        (* Type[LLVMBool -> int] *)
        Integer
    },
    (* Type[void] *)
    "Void"
]

LLVMLibraryFunction["LLVMTargetHasAsmBackend"] :=
LLVMLibraryFunction["LLVMTargetHasAsmBackend"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTargetHasAsmBackend_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMTargetHasJIT"] :=
LLVMLibraryFunction["LLVMTargetHasJIT"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTargetHasJIT_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMTargetHasTargetMachine"] :=
LLVMLibraryFunction["LLVMTargetHasTargetMachine"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTargetHasTargetMachine_Wrapper",
    {
        (* Type[LLVMTargetRef -> struct LLVMTarget *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMTargetMachineEmitToFile"] :=
LLVMLibraryFunction["LLVMTargetMachineEmitToFile"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTargetMachineEmitToFile_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[char *] *)
        "UTF8String",
        (* Type[LLVMCodeGenFileType -> enum LLVMCodeGenFileType] *)
        Integer,
        (* Type[char **] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMTargetMachineEmitToMemoryBuffer"] :=
LLVMLibraryFunction["LLVMTargetMachineEmitToMemoryBuffer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_LLVMTargetMachineEmitToMemoryBuffer_Wrapper",
    {
        (* Type[LLVMTargetMachineRef -> struct LLVMOpaqueTargetMachine *] *)
        Integer,
        (* Type[LLVMModuleRef -> struct LLVMOpaqueModule *] *)
        Integer,
        (* Type[LLVMCodeGenFileType -> enum LLVMCodeGenFileType] *)
        Integer,
        (* Type[char **] *)
        Integer,
        (* Type[LLVMMemoryBufferRef * -> struct LLVMOpaqueMemoryBuffer * *] *)
        Integer
    },
    (* Type[LLVMBool -> int] *)
    Integer
]

LLVMLibraryFunction["LLVMLink_allocateCharObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateCharObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateCharObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateConstCharConstObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateConstCharConstObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateConstCharConstObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueAttributeRefObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueAttributeRefObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueAttributeRefObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueBasicBlockObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueBasicBlockObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueBasicBlockObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueExecutionEngineObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueExecutionEngineObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueExecutionEngineObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueGenericValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueGenericValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueGenericValueObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueMemoryBufferObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueMemoryBufferObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueMemoryBufferObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueModuleObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueModuleObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueModuleObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueTypeObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueTypeObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueTypeObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMOpaqueValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMOpaqueValueObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_allocateLLVMTargetObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_allocateLLVMTargetObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_allocateLLVMTargetObjectPointer",
    {
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_deallocateCharObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateCharObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateCharObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateConstCharConstObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateConstCharConstObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateConstCharConstObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueAttributeRefObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueAttributeRefObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueAttributeRefObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueBasicBlockObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueBasicBlockObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueBasicBlockObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueExecutionEngineObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueExecutionEngineObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueExecutionEngineObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueGenericValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueGenericValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueGenericValueObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueMemoryBufferObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueMemoryBufferObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueMemoryBufferObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueModuleObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueModuleObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueModuleObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueTypeObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueTypeObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueTypeObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMOpaqueValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMOpaqueValueObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_deallocateLLVMTargetObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_deallocateLLVMTargetObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_deallocateLLVMTargetObjectPointer",
    {
        Integer
    },

    "Void"
]

LLVMLibraryFunction["LLVMLink_getCharObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getCharObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getCharObjectPointer",
    {
        Integer
    },

    "UTF8String"
]

LLVMLibraryFunction["LLVMLink_getConstCharConstObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getConstCharConstObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getConstCharConstObjectPointer",
    {
        Integer
    },

    "UTF8String"
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueAttributeRefObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueAttributeRefObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueAttributeRefObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueBasicBlockObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueBasicBlockObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueBasicBlockObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueExecutionEngineObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueExecutionEngineObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueExecutionEngineObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueGenericValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueGenericValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueGenericValueObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueMemoryBufferObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueMemoryBufferObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueMemoryBufferObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueModuleObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueModuleObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueModuleObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueTypeObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueTypeObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueTypeObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMOpaqueValueObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMOpaqueValueObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMOpaqueValueObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getLLVMTargetObjectPointer"] :=
LLVMLibraryFunction["LLVMLink_getLLVMTargetObjectPointer"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getLLVMTargetObjectPointer",
    {
        Integer
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_getIntegerArray_Wrapper"] :=
LLVMLibraryFunction["LLVMLink_getIntegerArray_Wrapper"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_getIntegerArray_Wrapper",
    {
        {Integer, 1}
    },

    Integer
]

LLVMLibraryFunction["LLVMLink_freeIntegerArray_Wrapper"] :=
LLVMLibraryFunction["LLVMLink_freeIntegerArray_Wrapper"] = LibraryFunctionLoad[LLVMLibraryName[],
    "LLVMLink_freeIntegerArray_Wrapper",
    {
        Integer
    },

    Integer
]



