All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.robovm.llvm.binding.LLVM Maven / Gradle / Ivy

There is a newer version: 1.12.0
Show newest version
/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 2.0.4
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package org.robovm.llvm.binding;

public class LLVM implements LLVMConstants {
  public static void InitializeCore(PassRegistryRef R) {
    LLVMJNI.InitializeCore(PassRegistryRef.getCPtr(R));
  }

  public static void Shutdown() {
    LLVMJNI.Shutdown();
  }

  public static void DisposeMessage(String Message) {
    LLVMJNI.DisposeMessage(Message);
  }

  public static ContextRef ContextCreate() {
    long cPtr = LLVMJNI.ContextCreate();
    return (cPtr == 0) ? null : new ContextRef(cPtr, false);
  }

  public static ContextRef GetGlobalContext() {
    long cPtr = LLVMJNI.GetGlobalContext();
    return (cPtr == 0) ? null : new ContextRef(cPtr, false);
  }

  public static void ContextDispose(ContextRef C) {
    LLVMJNI.ContextDispose(ContextRef.getCPtr(C));
  }

  public static int GetMDKindIDInContext(ContextRef C, String Name) {
    return LLVMJNI.GetMDKindIDInContext(ContextRef.getCPtr(C), Name);
  }

  public static int GetMDKindID(String Name) {
    return LLVMJNI.GetMDKindID(Name);
  }

  public static ModuleRef ModuleCreateWithName(String ModuleID) {
    long cPtr = LLVMJNI.ModuleCreateWithName(ModuleID);
    return (cPtr == 0) ? null : new ModuleRef(cPtr, false);
  }

  public static ModuleRef ModuleCreateWithNameInContext(String ModuleID, ContextRef C) {
    long cPtr = LLVMJNI.ModuleCreateWithNameInContext(ModuleID, ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new ModuleRef(cPtr, false);
  }

  public static void DisposeModule(ModuleRef M) {
    LLVMJNI.DisposeModule(ModuleRef.getCPtr(M));
  }

  public static String GetDataLayout(ModuleRef M) {
    return LLVMJNI.GetDataLayout(ModuleRef.getCPtr(M));
  }

  public static void SetDataLayout(ModuleRef M, String Triple) {
    LLVMJNI.SetDataLayout(ModuleRef.getCPtr(M), Triple);
  }

  public static String GetTarget(ModuleRef M) {
    return LLVMJNI.GetTarget(ModuleRef.getCPtr(M));
  }

  public static void SetTarget(ModuleRef M, String Triple) {
    LLVMJNI.SetTarget(ModuleRef.getCPtr(M), Triple);
  }

  public static void DumpModule(ModuleRef M) {
    LLVMJNI.DumpModule(ModuleRef.getCPtr(M));
  }

  public static boolean PrintModuleToFile(ModuleRef M, String Filename, StringOut ErrorMessage) {
    return LLVMJNI.PrintModuleToFile(ModuleRef.getCPtr(M), Filename, StringOut.getCPtr(ErrorMessage), ErrorMessage);
  }

  public static void SetModuleInlineAsm(ModuleRef M, String Asm) {
    LLVMJNI.SetModuleInlineAsm(ModuleRef.getCPtr(M), Asm);
  }

  public static ContextRef GetModuleContext(ModuleRef M) {
    long cPtr = LLVMJNI.GetModuleContext(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ContextRef(cPtr, false);
  }

  public static TypeRef GetTypeByName(ModuleRef M, String Name) {
    long cPtr = LLVMJNI.GetTypeByName(ModuleRef.getCPtr(M), Name);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int GetNamedMetadataNumOperands(ModuleRef M, String name) {
    return LLVMJNI.GetNamedMetadataNumOperands(ModuleRef.getCPtr(M), name);
  }

  public static void GetNamedMetadataOperands(ModuleRef M, String name, ValueRefArray Dest) {
    LLVMJNI.GetNamedMetadataOperands(ModuleRef.getCPtr(M), name, ValueRefArray.getCPtr(Dest), Dest);
  }

  public static void AddNamedMetadataOperand(ModuleRef M, String name, ValueRef Val) {
    LLVMJNI.AddNamedMetadataOperand(ModuleRef.getCPtr(M), name, ValueRef.getCPtr(Val));
  }

  public static ValueRef AddFunction(ModuleRef M, String Name, TypeRef FunctionTy) {
    long cPtr = LLVMJNI.AddFunction(ModuleRef.getCPtr(M), Name, TypeRef.getCPtr(FunctionTy));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetNamedFunction(ModuleRef M, String Name) {
    long cPtr = LLVMJNI.GetNamedFunction(ModuleRef.getCPtr(M), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetFirstFunction(ModuleRef M) {
    long cPtr = LLVMJNI.GetFirstFunction(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetLastFunction(ModuleRef M) {
    long cPtr = LLVMJNI.GetLastFunction(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetNextFunction(ValueRef Fn) {
    long cPtr = LLVMJNI.GetNextFunction(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetPreviousFunction(ValueRef Fn) {
    long cPtr = LLVMJNI.GetPreviousFunction(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static TypeKind GetTypeKind(TypeRef Ty) {
    return TypeKind.swigToEnum(LLVMJNI.GetTypeKind(TypeRef.getCPtr(Ty)));
  }

  public static boolean TypeIsSized(TypeRef Ty) {
    return LLVMJNI.TypeIsSized(TypeRef.getCPtr(Ty));
  }

  public static ContextRef GetTypeContext(TypeRef Ty) {
    long cPtr = LLVMJNI.GetTypeContext(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ContextRef(cPtr, false);
  }

  public static TypeRef Int1TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.Int1TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int8TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.Int8TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int16TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.Int16TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int32TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.Int32TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int64TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.Int64TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef IntTypeInContext(ContextRef C, int NumBits) {
    long cPtr = LLVMJNI.IntTypeInContext(ContextRef.getCPtr(C), NumBits);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int1Type() {
    long cPtr = LLVMJNI.Int1Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int8Type() {
    long cPtr = LLVMJNI.Int8Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int16Type() {
    long cPtr = LLVMJNI.Int16Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int32Type() {
    long cPtr = LLVMJNI.Int32Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef Int64Type() {
    long cPtr = LLVMJNI.Int64Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef IntType(int NumBits) {
    long cPtr = LLVMJNI.IntType(NumBits);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int GetIntTypeWidth(TypeRef IntegerTy) {
    return LLVMJNI.GetIntTypeWidth(TypeRef.getCPtr(IntegerTy));
  }

  public static TypeRef HalfTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.HalfTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef FloatTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.FloatTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef DoubleTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.DoubleTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef X86FP80TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.X86FP80TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef FP128TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.FP128TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef PPCFP128TypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.PPCFP128TypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef HalfType() {
    long cPtr = LLVMJNI.HalfType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef FloatType() {
    long cPtr = LLVMJNI.FloatType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef DoubleType() {
    long cPtr = LLVMJNI.DoubleType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef X86FP80Type() {
    long cPtr = LLVMJNI.X86FP80Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef FP128Type() {
    long cPtr = LLVMJNI.FP128Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef PPCFP128Type() {
    long cPtr = LLVMJNI.PPCFP128Type();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef FunctionType(TypeRef ReturnType, TypeRefArray ParamTypes, int ParamCount, boolean IsVarArg) {
    long cPtr = LLVMJNI.FunctionType(TypeRef.getCPtr(ReturnType), TypeRefArray.getCPtr(ParamTypes), ParamTypes, ParamCount, IsVarArg);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static boolean IsFunctionVarArg(TypeRef FunctionTy) {
    return LLVMJNI.IsFunctionVarArg(TypeRef.getCPtr(FunctionTy));
  }

  public static TypeRef GetReturnType(TypeRef FunctionTy) {
    long cPtr = LLVMJNI.GetReturnType(TypeRef.getCPtr(FunctionTy));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int CountParamTypes(TypeRef FunctionTy) {
    return LLVMJNI.CountParamTypes(TypeRef.getCPtr(FunctionTy));
  }

  public static void GetParamTypes(TypeRef FunctionTy, TypeRefArray Dest) {
    LLVMJNI.GetParamTypes(TypeRef.getCPtr(FunctionTy), TypeRefArray.getCPtr(Dest), Dest);
  }

  public static TypeRef StructTypeInContext(ContextRef C, TypeRefArray ElementTypes, int ElementCount, boolean Packed) {
    long cPtr = LLVMJNI.StructTypeInContext(ContextRef.getCPtr(C), TypeRefArray.getCPtr(ElementTypes), ElementTypes, ElementCount, Packed);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef StructType(TypeRefArray ElementTypes, int ElementCount, boolean Packed) {
    long cPtr = LLVMJNI.StructType(TypeRefArray.getCPtr(ElementTypes), ElementTypes, ElementCount, Packed);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef StructCreateNamed(ContextRef C, String Name) {
    long cPtr = LLVMJNI.StructCreateNamed(ContextRef.getCPtr(C), Name);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static String GetStructName(TypeRef Ty) {
    return LLVMJNI.GetStructName(TypeRef.getCPtr(Ty));
  }

  public static void StructSetBody(TypeRef StructTy, TypeRefArray ElementTypes, int ElementCount, boolean Packed) {
    LLVMJNI.StructSetBody(TypeRef.getCPtr(StructTy), TypeRefArray.getCPtr(ElementTypes), ElementTypes, ElementCount, Packed);
  }

  public static int CountStructElementTypes(TypeRef StructTy) {
    return LLVMJNI.CountStructElementTypes(TypeRef.getCPtr(StructTy));
  }

  public static void GetStructElementTypes(TypeRef StructTy, TypeRefArray Dest) {
    LLVMJNI.GetStructElementTypes(TypeRef.getCPtr(StructTy), TypeRefArray.getCPtr(Dest), Dest);
  }

  public static boolean IsPackedStruct(TypeRef StructTy) {
    return LLVMJNI.IsPackedStruct(TypeRef.getCPtr(StructTy));
  }

  public static boolean IsOpaqueStruct(TypeRef StructTy) {
    return LLVMJNI.IsOpaqueStruct(TypeRef.getCPtr(StructTy));
  }

  public static TypeRef GetElementType(TypeRef Ty) {
    long cPtr = LLVMJNI.GetElementType(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef ArrayType(TypeRef ElementType, int ElementCount) {
    long cPtr = LLVMJNI.ArrayType(TypeRef.getCPtr(ElementType), ElementCount);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int GetArrayLength(TypeRef ArrayTy) {
    return LLVMJNI.GetArrayLength(TypeRef.getCPtr(ArrayTy));
  }

  public static TypeRef PointerType(TypeRef ElementType, int AddressSpace) {
    long cPtr = LLVMJNI.PointerType(TypeRef.getCPtr(ElementType), AddressSpace);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int GetPointerAddressSpace(TypeRef PointerTy) {
    return LLVMJNI.GetPointerAddressSpace(TypeRef.getCPtr(PointerTy));
  }

  public static TypeRef VectorType(TypeRef ElementType, int ElementCount) {
    long cPtr = LLVMJNI.VectorType(TypeRef.getCPtr(ElementType), ElementCount);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static int GetVectorSize(TypeRef VectorTy) {
    return LLVMJNI.GetVectorSize(TypeRef.getCPtr(VectorTy));
  }

  public static TypeRef VoidTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.VoidTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef LabelTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.LabelTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef X86MMXTypeInContext(ContextRef C) {
    long cPtr = LLVMJNI.X86MMXTypeInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef VoidType() {
    long cPtr = LLVMJNI.VoidType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef LabelType() {
    long cPtr = LLVMJNI.LabelType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef X86MMXType() {
    long cPtr = LLVMJNI.X86MMXType();
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef TypeOf(ValueRef Val) {
    long cPtr = LLVMJNI.TypeOf(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static String GetValueName(ValueRef Val) {
    return LLVMJNI.GetValueName(ValueRef.getCPtr(Val));
  }

  public static void SetValueName(ValueRef Val, String Name) {
    LLVMJNI.SetValueName(ValueRef.getCPtr(Val), Name);
  }

  public static void DumpValue(ValueRef Val) {
    LLVMJNI.DumpValue(ValueRef.getCPtr(Val));
  }

  public static void ReplaceAllUsesWith(ValueRef OldVal, ValueRef NewVal) {
    LLVMJNI.ReplaceAllUsesWith(ValueRef.getCPtr(OldVal), ValueRef.getCPtr(NewVal));
  }

  public static boolean IsConstant(ValueRef Val) {
    return LLVMJNI.IsConstant(ValueRef.getCPtr(Val));
  }

  public static boolean IsUndef(ValueRef Val) {
    return LLVMJNI.IsUndef(ValueRef.getCPtr(Val));
  }

  public static ValueRef IsAArgument(ValueRef Val) {
    long cPtr = LLVMJNI.IsAArgument(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsABasicBlock(ValueRef Val) {
    long cPtr = LLVMJNI.IsABasicBlock(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAInlineAsm(ValueRef Val) {
    long cPtr = LLVMJNI.IsAInlineAsm(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMDNode(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMDNode(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMDString(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMDString(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAUser(ValueRef Val) {
    long cPtr = LLVMJNI.IsAUser(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstant(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstant(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsABlockAddress(ValueRef Val) {
    long cPtr = LLVMJNI.IsABlockAddress(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantAggregateZero(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantAggregateZero(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantArray(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantArray(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantExpr(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantExpr(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantFP(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantFP(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantInt(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantInt(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantPointerNull(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantPointerNull(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantStruct(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantStruct(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAConstantVector(ValueRef Val) {
    long cPtr = LLVMJNI.IsAConstantVector(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAGlobalValue(ValueRef Val) {
    long cPtr = LLVMJNI.IsAGlobalValue(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFunction(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFunction(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAGlobalAlias(ValueRef Val) {
    long cPtr = LLVMJNI.IsAGlobalAlias(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAGlobalVariable(ValueRef Val) {
    long cPtr = LLVMJNI.IsAGlobalVariable(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAUndefValue(ValueRef Val) {
    long cPtr = LLVMJNI.IsAUndefValue(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAInstruction(ValueRef Val) {
    long cPtr = LLVMJNI.IsAInstruction(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsABinaryOperator(ValueRef Val) {
    long cPtr = LLVMJNI.IsABinaryOperator(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsACallInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsACallInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAIntrinsicInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAIntrinsicInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsADbgInfoIntrinsic(ValueRef Val) {
    long cPtr = LLVMJNI.IsADbgInfoIntrinsic(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsADbgDeclareInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsADbgDeclareInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMemIntrinsic(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMemIntrinsic(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMemCpyInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMemCpyInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMemMoveInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMemMoveInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAMemSetInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAMemSetInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsACmpInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsACmpInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFCmpInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFCmpInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAICmpInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAICmpInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAExtractElementInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAExtractElementInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAGetElementPtrInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAGetElementPtrInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAInsertElementInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAInsertElementInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAInsertValueInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAInsertValueInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsALandingPadInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsALandingPadInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAPHINode(ValueRef Val) {
    long cPtr = LLVMJNI.IsAPHINode(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsASelectInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsASelectInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAShuffleVectorInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAShuffleVectorInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAStoreInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAStoreInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsATerminatorInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsATerminatorInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsABranchInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsABranchInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAIndirectBrInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAIndirectBrInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAInvokeInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAInvokeInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAReturnInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAReturnInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsASwitchInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsASwitchInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAUnreachableInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAUnreachableInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAResumeInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAResumeInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAUnaryInstruction(ValueRef Val) {
    long cPtr = LLVMJNI.IsAUnaryInstruction(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAAllocaInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAAllocaInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsACastInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsACastInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsABitCastInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsABitCastInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFPExtInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFPExtInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFPToSIInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFPToSIInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFPToUIInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFPToUIInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAFPTruncInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAFPTruncInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAIntToPtrInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAIntToPtrInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAPtrToIntInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAPtrToIntInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsASExtInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsASExtInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsASIToFPInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsASIToFPInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsATruncInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsATruncInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAUIToFPInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAUIToFPInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAZExtInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAZExtInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAExtractValueInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAExtractValueInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsALoadInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsALoadInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef IsAVAArgInst(ValueRef Val) {
    long cPtr = LLVMJNI.IsAVAArgInst(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static UseRef GetFirstUse(ValueRef Val) {
    long cPtr = LLVMJNI.GetFirstUse(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new UseRef(cPtr, false);
  }

  public static UseRef GetNextUse(UseRef U) {
    long cPtr = LLVMJNI.GetNextUse(UseRef.getCPtr(U));
    return (cPtr == 0) ? null : new UseRef(cPtr, false);
  }

  public static ValueRef GetUser(UseRef U) {
    long cPtr = LLVMJNI.GetUser(UseRef.getCPtr(U));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetUsedValue(UseRef U) {
    long cPtr = LLVMJNI.GetUsedValue(UseRef.getCPtr(U));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetOperand(ValueRef Val, int Index) {
    long cPtr = LLVMJNI.GetOperand(ValueRef.getCPtr(Val), Index);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void SetOperand(ValueRef User, int Index, ValueRef Val) {
    LLVMJNI.SetOperand(ValueRef.getCPtr(User), Index, ValueRef.getCPtr(Val));
  }

  public static int GetNumOperands(ValueRef Val) {
    return LLVMJNI.GetNumOperands(ValueRef.getCPtr(Val));
  }

  public static ValueRef ConstNull(TypeRef Ty) {
    long cPtr = LLVMJNI.ConstNull(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstAllOnes(TypeRef Ty) {
    long cPtr = LLVMJNI.ConstAllOnes(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetUndef(TypeRef Ty) {
    long cPtr = LLVMJNI.GetUndef(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static boolean IsNull(ValueRef Val) {
    return LLVMJNI.IsNull(ValueRef.getCPtr(Val));
  }

  public static ValueRef ConstPointerNull(TypeRef Ty) {
    long cPtr = LLVMJNI.ConstPointerNull(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstInt(TypeRef IntTy, java.math.BigInteger N, boolean SignExtend) {
    long cPtr = LLVMJNI.ConstInt(TypeRef.getCPtr(IntTy), N, SignExtend);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstIntOfArbitraryPrecision(TypeRef IntTy, int NumWords, LongArray Words) {
    long cPtr = LLVMJNI.ConstIntOfArbitraryPrecision(TypeRef.getCPtr(IntTy), NumWords, LongArray.getCPtr(Words), Words);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstIntOfString(TypeRef IntTy, String Text, byte Radix) {
    long cPtr = LLVMJNI.ConstIntOfString(TypeRef.getCPtr(IntTy), Text, Radix);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstReal(TypeRef RealTy, double N) {
    long cPtr = LLVMJNI.ConstReal(TypeRef.getCPtr(RealTy), N);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstRealOfString(TypeRef RealTy, String Text) {
    long cPtr = LLVMJNI.ConstRealOfString(TypeRef.getCPtr(RealTy), Text);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static java.math.BigInteger ConstIntGetZExtValue(ValueRef ConstantVal) {
    return LLVMJNI.ConstIntGetZExtValue(ValueRef.getCPtr(ConstantVal));
  }

  public static long ConstIntGetSExtValue(ValueRef ConstantVal) {
    return LLVMJNI.ConstIntGetSExtValue(ValueRef.getCPtr(ConstantVal));
  }

  public static ValueRef ConstStringInContext(ContextRef C, String Str, boolean DontNullTerminate) {
    long cPtr = LLVMJNI.ConstStringInContext(ContextRef.getCPtr(C), Str, DontNullTerminate);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstString(String Str, boolean DontNullTerminate) {
    long cPtr = LLVMJNI.ConstString(Str, DontNullTerminate);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstStructInContext(ContextRef C, ValueRefArray ConstantVals, int Count, boolean Packed) {
    long cPtr = LLVMJNI.ConstStructInContext(ContextRef.getCPtr(C), ValueRefArray.getCPtr(ConstantVals), ConstantVals, Count, Packed);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstStruct(ValueRefArray ConstantVals, int Count, boolean Packed) {
    long cPtr = LLVMJNI.ConstStruct(ValueRefArray.getCPtr(ConstantVals), ConstantVals, Count, Packed);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstArray(TypeRef ElementTy, ValueRefArray ConstantVals, int Length) {
    long cPtr = LLVMJNI.ConstArray(TypeRef.getCPtr(ElementTy), ValueRefArray.getCPtr(ConstantVals), ConstantVals, Length);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNamedStruct(TypeRef StructTy, ValueRefArray ConstantVals, int Count) {
    long cPtr = LLVMJNI.ConstNamedStruct(TypeRef.getCPtr(StructTy), ValueRefArray.getCPtr(ConstantVals), ConstantVals, Count);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstVector(ValueRefArray ScalarConstantVals, int Size) {
    long cPtr = LLVMJNI.ConstVector(ValueRefArray.getCPtr(ScalarConstantVals), ScalarConstantVals, Size);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static Opcode GetConstOpcode(ValueRef ConstantVal) {
    return Opcode.swigToEnum(LLVMJNI.GetConstOpcode(ValueRef.getCPtr(ConstantVal)));
  }

  public static ValueRef AlignOf(TypeRef Ty) {
    long cPtr = LLVMJNI.AlignOf(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef SizeOf(TypeRef Ty) {
    long cPtr = LLVMJNI.SizeOf(TypeRef.getCPtr(Ty));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNeg(ValueRef ConstantVal) {
    long cPtr = LLVMJNI.ConstNeg(ValueRef.getCPtr(ConstantVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNSWNeg(ValueRef ConstantVal) {
    long cPtr = LLVMJNI.ConstNSWNeg(ValueRef.getCPtr(ConstantVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNUWNeg(ValueRef ConstantVal) {
    long cPtr = LLVMJNI.ConstNUWNeg(ValueRef.getCPtr(ConstantVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFNeg(ValueRef ConstantVal) {
    long cPtr = LLVMJNI.ConstFNeg(ValueRef.getCPtr(ConstantVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNot(ValueRef ConstantVal) {
    long cPtr = LLVMJNI.ConstNot(ValueRef.getCPtr(ConstantVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstAdd(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstAdd(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNSWAdd(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNSWAdd(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNUWAdd(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNUWAdd(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFAdd(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFAdd(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSub(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstSub(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNSWSub(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNSWSub(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNUWSub(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNUWSub(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFSub(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFSub(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstMul(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstMul(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNSWMul(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNSWMul(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstNUWMul(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstNUWMul(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFMul(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFMul(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstUDiv(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstUDiv(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSDiv(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstSDiv(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstExactSDiv(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstExactSDiv(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFDiv(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFDiv(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstURem(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstURem(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSRem(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstSRem(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFRem(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFRem(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstAnd(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstAnd(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstOr(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstOr(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstXor(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstXor(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstICmp(IntPredicate Predicate, ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstICmp(Predicate.swigValue(), ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFCmp(RealPredicate Predicate, ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstFCmp(Predicate.swigValue(), ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstShl(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstShl(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstLShr(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstLShr(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstAShr(ValueRef LHSConstant, ValueRef RHSConstant) {
    long cPtr = LLVMJNI.ConstAShr(ValueRef.getCPtr(LHSConstant), ValueRef.getCPtr(RHSConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstGEP(ValueRef ConstantVal, ValueRefArray ConstantIndices, int NumIndices) {
    long cPtr = LLVMJNI.ConstGEP(ValueRef.getCPtr(ConstantVal), ValueRefArray.getCPtr(ConstantIndices), ConstantIndices, NumIndices);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstInBoundsGEP(ValueRef ConstantVal, ValueRefArray ConstantIndices, int NumIndices) {
    long cPtr = LLVMJNI.ConstInBoundsGEP(ValueRef.getCPtr(ConstantVal), ValueRefArray.getCPtr(ConstantIndices), ConstantIndices, NumIndices);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstTrunc(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstTrunc(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSExt(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstSExt(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstZExt(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstZExt(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFPTrunc(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstFPTrunc(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFPExt(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstFPExt(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstUIToFP(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstUIToFP(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSIToFP(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstSIToFP(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFPToUI(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstFPToUI(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFPToSI(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstFPToSI(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstPtrToInt(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstPtrToInt(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstIntToPtr(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstIntToPtr(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstBitCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstBitCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstZExtOrBitCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstZExtOrBitCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSExtOrBitCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstSExtOrBitCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstTruncOrBitCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstTruncOrBitCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstPointerCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstPointerCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstIntCast(ValueRef ConstantVal, TypeRef ToType, boolean isSigned) {
    long cPtr = LLVMJNI.ConstIntCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType), isSigned);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstFPCast(ValueRef ConstantVal, TypeRef ToType) {
    long cPtr = LLVMJNI.ConstFPCast(ValueRef.getCPtr(ConstantVal), TypeRef.getCPtr(ToType));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstSelect(ValueRef ConstantCondition, ValueRef ConstantIfTrue, ValueRef ConstantIfFalse) {
    long cPtr = LLVMJNI.ConstSelect(ValueRef.getCPtr(ConstantCondition), ValueRef.getCPtr(ConstantIfTrue), ValueRef.getCPtr(ConstantIfFalse));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstExtractElement(ValueRef VectorConstant, ValueRef IndexConstant) {
    long cPtr = LLVMJNI.ConstExtractElement(ValueRef.getCPtr(VectorConstant), ValueRef.getCPtr(IndexConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstInsertElement(ValueRef VectorConstant, ValueRef ElementValueConstant, ValueRef IndexConstant) {
    long cPtr = LLVMJNI.ConstInsertElement(ValueRef.getCPtr(VectorConstant), ValueRef.getCPtr(ElementValueConstant), ValueRef.getCPtr(IndexConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstShuffleVector(ValueRef VectorAConstant, ValueRef VectorBConstant, ValueRef MaskConstant) {
    long cPtr = LLVMJNI.ConstShuffleVector(ValueRef.getCPtr(VectorAConstant), ValueRef.getCPtr(VectorBConstant), ValueRef.getCPtr(MaskConstant));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstExtractValue(ValueRef AggConstant, IntArray IdxList, int NumIdx) {
    long cPtr = LLVMJNI.ConstExtractValue(ValueRef.getCPtr(AggConstant), IntArray.getCPtr(IdxList), IdxList, NumIdx);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstInsertValue(ValueRef AggConstant, ValueRef ElementValueConstant, IntArray IdxList, int NumIdx) {
    long cPtr = LLVMJNI.ConstInsertValue(ValueRef.getCPtr(AggConstant), ValueRef.getCPtr(ElementValueConstant), IntArray.getCPtr(IdxList), IdxList, NumIdx);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef ConstInlineAsm(TypeRef Ty, String AsmString, String Constraints, boolean HasSideEffects, boolean IsAlignStack) {
    long cPtr = LLVMJNI.ConstInlineAsm(TypeRef.getCPtr(Ty), AsmString, Constraints, HasSideEffects, IsAlignStack);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BlockAddress(ValueRef F, BasicBlockRef BB) {
    long cPtr = LLVMJNI.BlockAddress(ValueRef.getCPtr(F), BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ModuleRef GetGlobalParent(ValueRef Global) {
    long cPtr = LLVMJNI.GetGlobalParent(ValueRef.getCPtr(Global));
    return (cPtr == 0) ? null : new ModuleRef(cPtr, false);
  }

  public static boolean IsDeclaration(ValueRef Global) {
    return LLVMJNI.IsDeclaration(ValueRef.getCPtr(Global));
  }

  public static Linkage GetLinkage(ValueRef Global) {
    return Linkage.swigToEnum(LLVMJNI.GetLinkage(ValueRef.getCPtr(Global)));
  }

  public static void SetLinkage(ValueRef Global, Linkage Linkage) {
    LLVMJNI.SetLinkage(ValueRef.getCPtr(Global), Linkage.swigValue());
  }

  public static String GetSection(ValueRef Global) {
    return LLVMJNI.GetSection(ValueRef.getCPtr(Global));
  }

  public static void SetSection(ValueRef Global, String Section) {
    LLVMJNI.SetSection(ValueRef.getCPtr(Global), Section);
  }

  public static Visibility GetVisibility(ValueRef Global) {
    return Visibility.swigToEnum(LLVMJNI.GetVisibility(ValueRef.getCPtr(Global)));
  }

  public static void SetVisibility(ValueRef Global, Visibility Viz) {
    LLVMJNI.SetVisibility(ValueRef.getCPtr(Global), Viz.swigValue());
  }

  public static int GetAlignment(ValueRef Global) {
    return LLVMJNI.GetAlignment(ValueRef.getCPtr(Global));
  }

  public static void SetAlignment(ValueRef Global, int Bytes) {
    LLVMJNI.SetAlignment(ValueRef.getCPtr(Global), Bytes);
  }

  public static ValueRef AddGlobal(ModuleRef M, TypeRef Ty, String Name) {
    long cPtr = LLVMJNI.AddGlobal(ModuleRef.getCPtr(M), TypeRef.getCPtr(Ty), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef AddGlobalInAddressSpace(ModuleRef M, TypeRef Ty, String Name, int AddressSpace) {
    long cPtr = LLVMJNI.AddGlobalInAddressSpace(ModuleRef.getCPtr(M), TypeRef.getCPtr(Ty), Name, AddressSpace);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetNamedGlobal(ModuleRef M, String Name) {
    long cPtr = LLVMJNI.GetNamedGlobal(ModuleRef.getCPtr(M), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetFirstGlobal(ModuleRef M) {
    long cPtr = LLVMJNI.GetFirstGlobal(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetLastGlobal(ModuleRef M) {
    long cPtr = LLVMJNI.GetLastGlobal(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetNextGlobal(ValueRef GlobalVar) {
    long cPtr = LLVMJNI.GetNextGlobal(ValueRef.getCPtr(GlobalVar));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetPreviousGlobal(ValueRef GlobalVar) {
    long cPtr = LLVMJNI.GetPreviousGlobal(ValueRef.getCPtr(GlobalVar));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void DeleteGlobal(ValueRef GlobalVar) {
    LLVMJNI.DeleteGlobal(ValueRef.getCPtr(GlobalVar));
  }

  public static ValueRef GetInitializer(ValueRef GlobalVar) {
    long cPtr = LLVMJNI.GetInitializer(ValueRef.getCPtr(GlobalVar));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void SetInitializer(ValueRef GlobalVar, ValueRef ConstantVal) {
    LLVMJNI.SetInitializer(ValueRef.getCPtr(GlobalVar), ValueRef.getCPtr(ConstantVal));
  }

  public static boolean IsThreadLocal(ValueRef GlobalVar) {
    return LLVMJNI.IsThreadLocal(ValueRef.getCPtr(GlobalVar));
  }

  public static void SetThreadLocal(ValueRef GlobalVar, boolean IsThreadLocal) {
    LLVMJNI.SetThreadLocal(ValueRef.getCPtr(GlobalVar), IsThreadLocal);
  }

  public static boolean IsGlobalConstant(ValueRef GlobalVar) {
    return LLVMJNI.IsGlobalConstant(ValueRef.getCPtr(GlobalVar));
  }

  public static void SetGlobalConstant(ValueRef GlobalVar, boolean IsConstant) {
    LLVMJNI.SetGlobalConstant(ValueRef.getCPtr(GlobalVar), IsConstant);
  }

  public static ThreadLocalMode GetThreadLocalMode(ValueRef GlobalVar) {
    return ThreadLocalMode.swigToEnum(LLVMJNI.GetThreadLocalMode(ValueRef.getCPtr(GlobalVar)));
  }

  public static void SetThreadLocalMode(ValueRef GlobalVar, ThreadLocalMode Mode) {
    LLVMJNI.SetThreadLocalMode(ValueRef.getCPtr(GlobalVar), Mode.swigValue());
  }

  public static boolean IsExternallyInitialized(ValueRef GlobalVar) {
    return LLVMJNI.IsExternallyInitialized(ValueRef.getCPtr(GlobalVar));
  }

  public static void SetExternallyInitialized(ValueRef GlobalVar, boolean IsExtInit) {
    LLVMJNI.SetExternallyInitialized(ValueRef.getCPtr(GlobalVar), IsExtInit);
  }

  public static ValueRef AddAlias(ModuleRef M, TypeRef Ty, ValueRef Aliasee, String Name) {
    long cPtr = LLVMJNI.AddAlias(ModuleRef.getCPtr(M), TypeRef.getCPtr(Ty), ValueRef.getCPtr(Aliasee), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void DeleteFunction(ValueRef Fn) {
    LLVMJNI.DeleteFunction(ValueRef.getCPtr(Fn));
  }

  public static int GetIntrinsicID(ValueRef Fn) {
    return LLVMJNI.GetIntrinsicID(ValueRef.getCPtr(Fn));
  }

  public static int GetFunctionCallConv(ValueRef Fn) {
    return LLVMJNI.GetFunctionCallConv(ValueRef.getCPtr(Fn));
  }

  public static void SetFunctionCallConv(ValueRef Fn, int CC) {
    LLVMJNI.SetFunctionCallConv(ValueRef.getCPtr(Fn), CC);
  }

  public static String GetGC(ValueRef Fn) {
    return LLVMJNI.GetGC(ValueRef.getCPtr(Fn));
  }

  public static void SetGC(ValueRef Fn, String Name) {
    LLVMJNI.SetGC(ValueRef.getCPtr(Fn), Name);
  }

  public static void AddFunctionAttr(ValueRef Fn, Attribute PA) {
    LLVMJNI.AddFunctionAttr(ValueRef.getCPtr(Fn), PA.swigValue());
  }

  public static void AddTargetDependentFunctionAttr(ValueRef Fn, String A, String V) {
    LLVMJNI.AddTargetDependentFunctionAttr(ValueRef.getCPtr(Fn), A, V);
  }

  public static Attribute GetFunctionAttr(ValueRef Fn) {
    return Attribute.swigToEnum(LLVMJNI.GetFunctionAttr(ValueRef.getCPtr(Fn)));
  }

  public static void RemoveFunctionAttr(ValueRef Fn, Attribute PA) {
    LLVMJNI.RemoveFunctionAttr(ValueRef.getCPtr(Fn), PA.swigValue());
  }

  public static int CountParams(ValueRef Fn) {
    return LLVMJNI.CountParams(ValueRef.getCPtr(Fn));
  }

  public static void GetParams(ValueRef Fn, ValueRefArray Params) {
    LLVMJNI.GetParams(ValueRef.getCPtr(Fn), ValueRefArray.getCPtr(Params), Params);
  }

  public static ValueRef GetParam(ValueRef Fn, int Index) {
    long cPtr = LLVMJNI.GetParam(ValueRef.getCPtr(Fn), Index);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetParamParent(ValueRef Inst) {
    long cPtr = LLVMJNI.GetParamParent(ValueRef.getCPtr(Inst));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetFirstParam(ValueRef Fn) {
    long cPtr = LLVMJNI.GetFirstParam(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetLastParam(ValueRef Fn) {
    long cPtr = LLVMJNI.GetLastParam(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetNextParam(ValueRef Arg) {
    long cPtr = LLVMJNI.GetNextParam(ValueRef.getCPtr(Arg));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetPreviousParam(ValueRef Arg) {
    long cPtr = LLVMJNI.GetPreviousParam(ValueRef.getCPtr(Arg));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void AddAttribute(ValueRef Arg, Attribute PA) {
    LLVMJNI.AddAttribute(ValueRef.getCPtr(Arg), PA.swigValue());
  }

  public static void RemoveAttribute(ValueRef Arg, Attribute PA) {
    LLVMJNI.RemoveAttribute(ValueRef.getCPtr(Arg), PA.swigValue());
  }

  public static Attribute GetAttribute(ValueRef Arg) {
    return Attribute.swigToEnum(LLVMJNI.GetAttribute(ValueRef.getCPtr(Arg)));
  }

  public static void SetParamAlignment(ValueRef Arg, int align) {
    LLVMJNI.SetParamAlignment(ValueRef.getCPtr(Arg), align);
  }

  public static ValueRef MDStringInContext(ContextRef C, String Str) {
    long cPtr = LLVMJNI.MDStringInContext(ContextRef.getCPtr(C), Str);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef MDString(String Str) {
    long cPtr = LLVMJNI.MDString(Str);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef MDNodeInContext(ContextRef C, ValueRefArray Vals, int Count) {
    long cPtr = LLVMJNI.MDNodeInContext(ContextRef.getCPtr(C), ValueRefArray.getCPtr(Vals), Vals, Count);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef MDNode(ValueRefArray Vals, int Count) {
    long cPtr = LLVMJNI.MDNode(ValueRefArray.getCPtr(Vals), Vals, Count);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static String GetMDString(ValueRef V, IntOut Len) {
    return LLVMJNI.GetMDString(ValueRef.getCPtr(V), IntOut.getCPtr(Len), Len);
  }

  public static int GetMDNodeNumOperands(ValueRef V) {
    return LLVMJNI.GetMDNodeNumOperands(ValueRef.getCPtr(V));
  }

  public static void GetMDNodeOperands(ValueRef V, ValueRefArray Dest) {
    LLVMJNI.GetMDNodeOperands(ValueRef.getCPtr(V), ValueRefArray.getCPtr(Dest), Dest);
  }

  public static ValueRef BasicBlockAsValue(BasicBlockRef BB) {
    long cPtr = LLVMJNI.BasicBlockAsValue(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static boolean ValueIsBasicBlock(ValueRef Val) {
    return LLVMJNI.ValueIsBasicBlock(ValueRef.getCPtr(Val));
  }

  public static BasicBlockRef ValueAsBasicBlock(ValueRef Val) {
    long cPtr = LLVMJNI.ValueAsBasicBlock(ValueRef.getCPtr(Val));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static ValueRef GetBasicBlockParent(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetBasicBlockParent(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetBasicBlockTerminator(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetBasicBlockTerminator(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static int CountBasicBlocks(ValueRef Fn) {
    return LLVMJNI.CountBasicBlocks(ValueRef.getCPtr(Fn));
  }

  public static void GetBasicBlocks(ValueRef Fn, BasicBlockRefArray BasicBlocks) {
    LLVMJNI.GetBasicBlocks(ValueRef.getCPtr(Fn), BasicBlockRefArray.getCPtr(BasicBlocks), BasicBlocks);
  }

  public static BasicBlockRef GetFirstBasicBlock(ValueRef Fn) {
    long cPtr = LLVMJNI.GetFirstBasicBlock(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef GetLastBasicBlock(ValueRef Fn) {
    long cPtr = LLVMJNI.GetLastBasicBlock(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef GetNextBasicBlock(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetNextBasicBlock(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef GetPreviousBasicBlock(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetPreviousBasicBlock(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef GetEntryBasicBlock(ValueRef Fn) {
    long cPtr = LLVMJNI.GetEntryBasicBlock(ValueRef.getCPtr(Fn));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef AppendBasicBlockInContext(ContextRef C, ValueRef Fn, String Name) {
    long cPtr = LLVMJNI.AppendBasicBlockInContext(ContextRef.getCPtr(C), ValueRef.getCPtr(Fn), Name);
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef AppendBasicBlock(ValueRef Fn, String Name) {
    long cPtr = LLVMJNI.AppendBasicBlock(ValueRef.getCPtr(Fn), Name);
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef InsertBasicBlockInContext(ContextRef C, BasicBlockRef BB, String Name) {
    long cPtr = LLVMJNI.InsertBasicBlockInContext(ContextRef.getCPtr(C), BasicBlockRef.getCPtr(BB), Name);
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BasicBlockRef InsertBasicBlock(BasicBlockRef InsertBeforeBB, String Name) {
    long cPtr = LLVMJNI.InsertBasicBlock(BasicBlockRef.getCPtr(InsertBeforeBB), Name);
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static void DeleteBasicBlock(BasicBlockRef BB) {
    LLVMJNI.DeleteBasicBlock(BasicBlockRef.getCPtr(BB));
  }

  public static void RemoveBasicBlockFromParent(BasicBlockRef BB) {
    LLVMJNI.RemoveBasicBlockFromParent(BasicBlockRef.getCPtr(BB));
  }

  public static void MoveBasicBlockBefore(BasicBlockRef BB, BasicBlockRef MovePos) {
    LLVMJNI.MoveBasicBlockBefore(BasicBlockRef.getCPtr(BB), BasicBlockRef.getCPtr(MovePos));
  }

  public static void MoveBasicBlockAfter(BasicBlockRef BB, BasicBlockRef MovePos) {
    LLVMJNI.MoveBasicBlockAfter(BasicBlockRef.getCPtr(BB), BasicBlockRef.getCPtr(MovePos));
  }

  public static ValueRef GetFirstInstruction(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetFirstInstruction(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetLastInstruction(BasicBlockRef BB) {
    long cPtr = LLVMJNI.GetLastInstruction(BasicBlockRef.getCPtr(BB));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static int HasMetadata(ValueRef Val) {
    return LLVMJNI.HasMetadata(ValueRef.getCPtr(Val));
  }

  public static ValueRef GetMetadata(ValueRef Val, int KindID) {
    long cPtr = LLVMJNI.GetMetadata(ValueRef.getCPtr(Val), KindID);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void SetMetadata(ValueRef Val, int KindID, ValueRef Node) {
    LLVMJNI.SetMetadata(ValueRef.getCPtr(Val), KindID, ValueRef.getCPtr(Node));
  }

  public static BasicBlockRef GetInstructionParent(ValueRef Inst) {
    long cPtr = LLVMJNI.GetInstructionParent(ValueRef.getCPtr(Inst));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static ValueRef GetNextInstruction(ValueRef Inst) {
    long cPtr = LLVMJNI.GetNextInstruction(ValueRef.getCPtr(Inst));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef GetPreviousInstruction(ValueRef Inst) {
    long cPtr = LLVMJNI.GetPreviousInstruction(ValueRef.getCPtr(Inst));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void InstructionEraseFromParent(ValueRef Inst) {
    LLVMJNI.InstructionEraseFromParent(ValueRef.getCPtr(Inst));
  }

  public static Opcode GetInstructionOpcode(ValueRef Inst) {
    return Opcode.swigToEnum(LLVMJNI.GetInstructionOpcode(ValueRef.getCPtr(Inst)));
  }

  public static IntPredicate GetICmpPredicate(ValueRef Inst) {
    return IntPredicate.swigToEnum(LLVMJNI.GetICmpPredicate(ValueRef.getCPtr(Inst)));
  }

  public static void SetInstructionCallConv(ValueRef Instr, int CC) {
    LLVMJNI.SetInstructionCallConv(ValueRef.getCPtr(Instr), CC);
  }

  public static int GetInstructionCallConv(ValueRef Instr) {
    return LLVMJNI.GetInstructionCallConv(ValueRef.getCPtr(Instr));
  }

  public static void AddInstrAttribute(ValueRef Instr, int index, Attribute arg2) {
    LLVMJNI.AddInstrAttribute(ValueRef.getCPtr(Instr), index, arg2.swigValue());
  }

  public static void RemoveInstrAttribute(ValueRef Instr, int index, Attribute arg2) {
    LLVMJNI.RemoveInstrAttribute(ValueRef.getCPtr(Instr), index, arg2.swigValue());
  }

  public static void SetInstrParamAlignment(ValueRef Instr, int index, int align) {
    LLVMJNI.SetInstrParamAlignment(ValueRef.getCPtr(Instr), index, align);
  }

  public static boolean IsTailCall(ValueRef CallInst) {
    return LLVMJNI.IsTailCall(ValueRef.getCPtr(CallInst));
  }

  public static void SetTailCall(ValueRef CallInst, boolean IsTailCall) {
    LLVMJNI.SetTailCall(ValueRef.getCPtr(CallInst), IsTailCall);
  }

  public static BasicBlockRef GetSwitchDefaultDest(ValueRef SwitchInstr) {
    long cPtr = LLVMJNI.GetSwitchDefaultDest(ValueRef.getCPtr(SwitchInstr));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static void AddIncoming(ValueRef PhiNode, ValueRefArray IncomingValues, BasicBlockRefArray IncomingBlocks, int Count) {
    LLVMJNI.AddIncoming(ValueRef.getCPtr(PhiNode), ValueRefArray.getCPtr(IncomingValues), IncomingValues, BasicBlockRefArray.getCPtr(IncomingBlocks), IncomingBlocks, Count);
  }

  public static int CountIncoming(ValueRef PhiNode) {
    return LLVMJNI.CountIncoming(ValueRef.getCPtr(PhiNode));
  }

  public static ValueRef GetIncomingValue(ValueRef PhiNode, int Index) {
    long cPtr = LLVMJNI.GetIncomingValue(ValueRef.getCPtr(PhiNode), Index);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static BasicBlockRef GetIncomingBlock(ValueRef PhiNode, int Index) {
    long cPtr = LLVMJNI.GetIncomingBlock(ValueRef.getCPtr(PhiNode), Index);
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static BuilderRef CreateBuilderInContext(ContextRef C) {
    long cPtr = LLVMJNI.CreateBuilderInContext(ContextRef.getCPtr(C));
    return (cPtr == 0) ? null : new BuilderRef(cPtr, false);
  }

  public static BuilderRef CreateBuilder() {
    long cPtr = LLVMJNI.CreateBuilder();
    return (cPtr == 0) ? null : new BuilderRef(cPtr, false);
  }

  public static void PositionBuilder(BuilderRef Builder, BasicBlockRef Block, ValueRef Instr) {
    LLVMJNI.PositionBuilder(BuilderRef.getCPtr(Builder), BasicBlockRef.getCPtr(Block), ValueRef.getCPtr(Instr));
  }

  public static void PositionBuilderBefore(BuilderRef Builder, ValueRef Instr) {
    LLVMJNI.PositionBuilderBefore(BuilderRef.getCPtr(Builder), ValueRef.getCPtr(Instr));
  }

  public static void PositionBuilderAtEnd(BuilderRef Builder, BasicBlockRef Block) {
    LLVMJNI.PositionBuilderAtEnd(BuilderRef.getCPtr(Builder), BasicBlockRef.getCPtr(Block));
  }

  public static BasicBlockRef GetInsertBlock(BuilderRef Builder) {
    long cPtr = LLVMJNI.GetInsertBlock(BuilderRef.getCPtr(Builder));
    return (cPtr == 0) ? null : new BasicBlockRef(cPtr, false);
  }

  public static void ClearInsertionPosition(BuilderRef Builder) {
    LLVMJNI.ClearInsertionPosition(BuilderRef.getCPtr(Builder));
  }

  public static void InsertIntoBuilder(BuilderRef Builder, ValueRef Instr) {
    LLVMJNI.InsertIntoBuilder(BuilderRef.getCPtr(Builder), ValueRef.getCPtr(Instr));
  }

  public static void InsertIntoBuilderWithName(BuilderRef Builder, ValueRef Instr, String Name) {
    LLVMJNI.InsertIntoBuilderWithName(BuilderRef.getCPtr(Builder), ValueRef.getCPtr(Instr), Name);
  }

  public static void DisposeBuilder(BuilderRef Builder) {
    LLVMJNI.DisposeBuilder(BuilderRef.getCPtr(Builder));
  }

  public static void SetCurrentDebugLocation(BuilderRef Builder, ValueRef L) {
    LLVMJNI.SetCurrentDebugLocation(BuilderRef.getCPtr(Builder), ValueRef.getCPtr(L));
  }

  public static ValueRef GetCurrentDebugLocation(BuilderRef Builder) {
    long cPtr = LLVMJNI.GetCurrentDebugLocation(BuilderRef.getCPtr(Builder));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void SetInstDebugLocation(BuilderRef Builder, ValueRef Inst) {
    LLVMJNI.SetInstDebugLocation(BuilderRef.getCPtr(Builder), ValueRef.getCPtr(Inst));
  }

  public static ValueRef BuildRetVoid(BuilderRef arg0) {
    long cPtr = LLVMJNI.BuildRetVoid(BuilderRef.getCPtr(arg0));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildRet(BuilderRef arg0, ValueRef V) {
    long cPtr = LLVMJNI.BuildRet(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildAggregateRet(BuilderRef arg0, ValueRefArray RetVals, int N) {
    long cPtr = LLVMJNI.BuildAggregateRet(BuilderRef.getCPtr(arg0), ValueRefArray.getCPtr(RetVals), RetVals, N);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildBr(BuilderRef arg0, BasicBlockRef Dest) {
    long cPtr = LLVMJNI.BuildBr(BuilderRef.getCPtr(arg0), BasicBlockRef.getCPtr(Dest));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildCondBr(BuilderRef arg0, ValueRef If, BasicBlockRef Then, BasicBlockRef Else) {
    long cPtr = LLVMJNI.BuildCondBr(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(If), BasicBlockRef.getCPtr(Then), BasicBlockRef.getCPtr(Else));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSwitch(BuilderRef arg0, ValueRef V, BasicBlockRef Else, int NumCases) {
    long cPtr = LLVMJNI.BuildSwitch(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V), BasicBlockRef.getCPtr(Else), NumCases);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildIndirectBr(BuilderRef B, ValueRef Addr, int NumDests) {
    long cPtr = LLVMJNI.BuildIndirectBr(BuilderRef.getCPtr(B), ValueRef.getCPtr(Addr), NumDests);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildInvoke(BuilderRef arg0, ValueRef Fn, ValueRefArray Args, int NumArgs, BasicBlockRef Then, BasicBlockRef Catch, String Name) {
    long cPtr = LLVMJNI.BuildInvoke(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Fn), ValueRefArray.getCPtr(Args), Args, NumArgs, BasicBlockRef.getCPtr(Then), BasicBlockRef.getCPtr(Catch), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildLandingPad(BuilderRef B, TypeRef Ty, ValueRef PersFn, int NumClauses, String Name) {
    long cPtr = LLVMJNI.BuildLandingPad(BuilderRef.getCPtr(B), TypeRef.getCPtr(Ty), ValueRef.getCPtr(PersFn), NumClauses, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildResume(BuilderRef B, ValueRef Exn) {
    long cPtr = LLVMJNI.BuildResume(BuilderRef.getCPtr(B), ValueRef.getCPtr(Exn));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildUnreachable(BuilderRef arg0) {
    long cPtr = LLVMJNI.BuildUnreachable(BuilderRef.getCPtr(arg0));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static void AddCase(ValueRef Switch, ValueRef OnVal, BasicBlockRef Dest) {
    LLVMJNI.AddCase(ValueRef.getCPtr(Switch), ValueRef.getCPtr(OnVal), BasicBlockRef.getCPtr(Dest));
  }

  public static void AddDestination(ValueRef IndirectBr, BasicBlockRef Dest) {
    LLVMJNI.AddDestination(ValueRef.getCPtr(IndirectBr), BasicBlockRef.getCPtr(Dest));
  }

  public static void AddClause(ValueRef LandingPad, ValueRef ClauseVal) {
    LLVMJNI.AddClause(ValueRef.getCPtr(LandingPad), ValueRef.getCPtr(ClauseVal));
  }

  public static void SetCleanup(ValueRef LandingPad, boolean Val) {
    LLVMJNI.SetCleanup(ValueRef.getCPtr(LandingPad), Val);
  }

  public static ValueRef BuildAdd(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildAdd(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNSWAdd(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNSWAdd(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNUWAdd(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNUWAdd(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFAdd(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFAdd(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSub(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildSub(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNSWSub(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNSWSub(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNUWSub(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNUWSub(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFSub(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFSub(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildMul(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildMul(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNSWMul(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNSWMul(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNUWMul(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildNUWMul(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFMul(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFMul(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildUDiv(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildUDiv(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSDiv(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildSDiv(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildExactSDiv(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildExactSDiv(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFDiv(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFDiv(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildURem(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildURem(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSRem(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildSRem(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFRem(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFRem(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildShl(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildShl(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildLShr(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildLShr(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildAShr(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildAShr(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildAnd(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildAnd(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildOr(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildOr(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildXor(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildXor(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildBinOp(BuilderRef B, Opcode Op, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildBinOp(BuilderRef.getCPtr(B), Op.swigValue(), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNeg(BuilderRef arg0, ValueRef V, String Name) {
    long cPtr = LLVMJNI.BuildNeg(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNSWNeg(BuilderRef B, ValueRef V, String Name) {
    long cPtr = LLVMJNI.BuildNSWNeg(BuilderRef.getCPtr(B), ValueRef.getCPtr(V), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNUWNeg(BuilderRef B, ValueRef V, String Name) {
    long cPtr = LLVMJNI.BuildNUWNeg(BuilderRef.getCPtr(B), ValueRef.getCPtr(V), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFNeg(BuilderRef arg0, ValueRef V, String Name) {
    long cPtr = LLVMJNI.BuildFNeg(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildNot(BuilderRef arg0, ValueRef V, String Name) {
    long cPtr = LLVMJNI.BuildNot(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildMalloc(BuilderRef arg0, TypeRef Ty, String Name) {
    long cPtr = LLVMJNI.BuildMalloc(BuilderRef.getCPtr(arg0), TypeRef.getCPtr(Ty), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildArrayMalloc(BuilderRef arg0, TypeRef Ty, ValueRef Val, String Name) {
    long cPtr = LLVMJNI.BuildArrayMalloc(BuilderRef.getCPtr(arg0), TypeRef.getCPtr(Ty), ValueRef.getCPtr(Val), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildAlloca(BuilderRef arg0, TypeRef Ty, String Name) {
    long cPtr = LLVMJNI.BuildAlloca(BuilderRef.getCPtr(arg0), TypeRef.getCPtr(Ty), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildArrayAlloca(BuilderRef arg0, TypeRef Ty, ValueRef Val, String Name) {
    long cPtr = LLVMJNI.BuildArrayAlloca(BuilderRef.getCPtr(arg0), TypeRef.getCPtr(Ty), ValueRef.getCPtr(Val), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFree(BuilderRef arg0, ValueRef PointerVal) {
    long cPtr = LLVMJNI.BuildFree(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(PointerVal));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildLoad(BuilderRef arg0, ValueRef PointerVal, String Name) {
    long cPtr = LLVMJNI.BuildLoad(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(PointerVal), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildStore(BuilderRef arg0, ValueRef Val, ValueRef Ptr) {
    long cPtr = LLVMJNI.BuildStore(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), ValueRef.getCPtr(Ptr));
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildGEP(BuilderRef B, ValueRef Pointer, ValueRefArray Indices, int NumIndices, String Name) {
    long cPtr = LLVMJNI.BuildGEP(BuilderRef.getCPtr(B), ValueRef.getCPtr(Pointer), ValueRefArray.getCPtr(Indices), Indices, NumIndices, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildInBoundsGEP(BuilderRef B, ValueRef Pointer, ValueRefArray Indices, int NumIndices, String Name) {
    long cPtr = LLVMJNI.BuildInBoundsGEP(BuilderRef.getCPtr(B), ValueRef.getCPtr(Pointer), ValueRefArray.getCPtr(Indices), Indices, NumIndices, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildStructGEP(BuilderRef B, ValueRef Pointer, int Idx, String Name) {
    long cPtr = LLVMJNI.BuildStructGEP(BuilderRef.getCPtr(B), ValueRef.getCPtr(Pointer), Idx, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildGlobalString(BuilderRef B, String Str, String Name) {
    long cPtr = LLVMJNI.BuildGlobalString(BuilderRef.getCPtr(B), Str, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildGlobalStringPtr(BuilderRef B, String Str, String Name) {
    long cPtr = LLVMJNI.BuildGlobalStringPtr(BuilderRef.getCPtr(B), Str, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static boolean GetVolatile(ValueRef MemoryAccessInst) {
    return LLVMJNI.GetVolatile(ValueRef.getCPtr(MemoryAccessInst));
  }

  public static void SetVolatile(ValueRef MemoryAccessInst, boolean IsVolatile) {
    LLVMJNI.SetVolatile(ValueRef.getCPtr(MemoryAccessInst), IsVolatile);
  }

  public static ValueRef BuildTrunc(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildTrunc(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildZExt(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildZExt(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSExt(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildSExt(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFPToUI(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildFPToUI(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFPToSI(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildFPToSI(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildUIToFP(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildUIToFP(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSIToFP(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildSIToFP(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFPTrunc(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildFPTrunc(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFPExt(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildFPExt(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildPtrToInt(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildPtrToInt(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildIntToPtr(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildIntToPtr(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildBitCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildBitCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildZExtOrBitCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildZExtOrBitCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSExtOrBitCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildSExtOrBitCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildTruncOrBitCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildTruncOrBitCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildCast(BuilderRef B, Opcode Op, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildCast(BuilderRef.getCPtr(B), Op.swigValue(), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildPointerCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildPointerCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildIntCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildIntCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFPCast(BuilderRef arg0, ValueRef Val, TypeRef DestTy, String Name) {
    long cPtr = LLVMJNI.BuildFPCast(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), TypeRef.getCPtr(DestTy), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildICmp(BuilderRef arg0, IntPredicate Op, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildICmp(BuilderRef.getCPtr(arg0), Op.swigValue(), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildFCmp(BuilderRef arg0, RealPredicate Op, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildFCmp(BuilderRef.getCPtr(arg0), Op.swigValue(), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildPhi(BuilderRef arg0, TypeRef Ty, String Name) {
    long cPtr = LLVMJNI.BuildPhi(BuilderRef.getCPtr(arg0), TypeRef.getCPtr(Ty), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildCall(BuilderRef arg0, ValueRef Fn, ValueRefArray Args, int NumArgs, String Name) {
    long cPtr = LLVMJNI.BuildCall(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Fn), ValueRefArray.getCPtr(Args), Args, NumArgs, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildSelect(BuilderRef arg0, ValueRef If, ValueRef Then, ValueRef Else, String Name) {
    long cPtr = LLVMJNI.BuildSelect(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(If), ValueRef.getCPtr(Then), ValueRef.getCPtr(Else), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildVAArg(BuilderRef arg0, ValueRef List, TypeRef Ty, String Name) {
    long cPtr = LLVMJNI.BuildVAArg(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(List), TypeRef.getCPtr(Ty), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildExtractElement(BuilderRef arg0, ValueRef VecVal, ValueRef Index, String Name) {
    long cPtr = LLVMJNI.BuildExtractElement(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(VecVal), ValueRef.getCPtr(Index), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildInsertElement(BuilderRef arg0, ValueRef VecVal, ValueRef EltVal, ValueRef Index, String Name) {
    long cPtr = LLVMJNI.BuildInsertElement(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(VecVal), ValueRef.getCPtr(EltVal), ValueRef.getCPtr(Index), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildShuffleVector(BuilderRef arg0, ValueRef V1, ValueRef V2, ValueRef Mask, String Name) {
    long cPtr = LLVMJNI.BuildShuffleVector(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(V1), ValueRef.getCPtr(V2), ValueRef.getCPtr(Mask), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildExtractValue(BuilderRef arg0, ValueRef AggVal, int Index, String Name) {
    long cPtr = LLVMJNI.BuildExtractValue(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(AggVal), Index, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildInsertValue(BuilderRef arg0, ValueRef AggVal, ValueRef EltVal, int Index, String Name) {
    long cPtr = LLVMJNI.BuildInsertValue(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(AggVal), ValueRef.getCPtr(EltVal), Index, Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildIsNull(BuilderRef arg0, ValueRef Val, String Name) {
    long cPtr = LLVMJNI.BuildIsNull(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildIsNotNull(BuilderRef arg0, ValueRef Val, String Name) {
    long cPtr = LLVMJNI.BuildIsNotNull(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(Val), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildPtrDiff(BuilderRef arg0, ValueRef LHS, ValueRef RHS, String Name) {
    long cPtr = LLVMJNI.BuildPtrDiff(BuilderRef.getCPtr(arg0), ValueRef.getCPtr(LHS), ValueRef.getCPtr(RHS), Name);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ValueRef BuildAtomicRMW(BuilderRef B, AtomicRMWBinOp op, ValueRef PTR, ValueRef Val, AtomicOrdering ordering, boolean singleThread) {
    long cPtr = LLVMJNI.BuildAtomicRMW(BuilderRef.getCPtr(B), op.swigValue(), ValueRef.getCPtr(PTR), ValueRef.getCPtr(Val), ordering.swigValue(), singleThread);
    return (cPtr == 0) ? null : new ValueRef(cPtr, false);
  }

  public static ModuleProviderRef CreateModuleProviderForExistingModule(ModuleRef M) {
    long cPtr = LLVMJNI.CreateModuleProviderForExistingModule(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new ModuleProviderRef(cPtr, false);
  }

  public static void DisposeModuleProvider(ModuleProviderRef M) {
    LLVMJNI.DisposeModuleProvider(ModuleProviderRef.getCPtr(M));
  }

  public static boolean CreateMemoryBufferWithContentsOfFile(String Path, MemoryBufferRefOut OutMemBuf, StringOut OutMessage) {
    return LLVMJNI.CreateMemoryBufferWithContentsOfFile(Path, MemoryBufferRefOut.getCPtr(OutMemBuf), OutMemBuf, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static boolean CreateMemoryBufferWithSTDIN(MemoryBufferRefOut OutMemBuf, StringOut OutMessage) {
    return LLVMJNI.CreateMemoryBufferWithSTDIN(MemoryBufferRefOut.getCPtr(OutMemBuf), OutMemBuf, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static MemoryBufferRef CreateMemoryBufferWithMemoryRange(byte[] InputData, String BufferName, boolean RequiresNullTerminator) {
    long cPtr = LLVMJNI.CreateMemoryBufferWithMemoryRange(InputData, BufferName, RequiresNullTerminator);
    return (cPtr == 0) ? null : new MemoryBufferRef(cPtr, false);
  }

  public static MemoryBufferRef CreateMemoryBufferWithMemoryRangeCopy(byte[] InputData, String BufferName) {
    long cPtr = LLVMJNI.CreateMemoryBufferWithMemoryRangeCopy(InputData, BufferName);
    return (cPtr == 0) ? null : new MemoryBufferRef(cPtr, false);
  }

  public static String GetBufferStart(MemoryBufferRef MemBuf) {
    return LLVMJNI.GetBufferStart(MemoryBufferRef.getCPtr(MemBuf));
  }

  public static long GetBufferSize(MemoryBufferRef MemBuf) {
    return LLVMJNI.GetBufferSize(MemoryBufferRef.getCPtr(MemBuf));
  }

  public static void DisposeMemoryBuffer(MemoryBufferRef MemBuf) {
    LLVMJNI.DisposeMemoryBuffer(MemoryBufferRef.getCPtr(MemBuf));
  }

  public static PassRegistryRef GetGlobalPassRegistry() {
    long cPtr = LLVMJNI.GetGlobalPassRegistry();
    return (cPtr == 0) ? null : new PassRegistryRef(cPtr, false);
  }

  public static PassManagerRef CreatePassManager() {
    long cPtr = LLVMJNI.CreatePassManager();
    return (cPtr == 0) ? null : new PassManagerRef(cPtr, false);
  }

  public static PassManagerRef CreateFunctionPassManagerForModule(ModuleRef M) {
    long cPtr = LLVMJNI.CreateFunctionPassManagerForModule(ModuleRef.getCPtr(M));
    return (cPtr == 0) ? null : new PassManagerRef(cPtr, false);
  }

  public static PassManagerRef CreateFunctionPassManager(ModuleProviderRef MP) {
    long cPtr = LLVMJNI.CreateFunctionPassManager(ModuleProviderRef.getCPtr(MP));
    return (cPtr == 0) ? null : new PassManagerRef(cPtr, false);
  }

  public static boolean RunPassManager(PassManagerRef PM, ModuleRef M) {
    return LLVMJNI.RunPassManager(PassManagerRef.getCPtr(PM), ModuleRef.getCPtr(M));
  }

  public static boolean InitializeFunctionPassManager(PassManagerRef FPM) {
    return LLVMJNI.InitializeFunctionPassManager(PassManagerRef.getCPtr(FPM));
  }

  public static boolean RunFunctionPassManager(PassManagerRef FPM, ValueRef F) {
    return LLVMJNI.RunFunctionPassManager(PassManagerRef.getCPtr(FPM), ValueRef.getCPtr(F));
  }

  public static boolean FinalizeFunctionPassManager(PassManagerRef FPM) {
    return LLVMJNI.FinalizeFunctionPassManager(PassManagerRef.getCPtr(FPM));
  }

  public static void DisposePassManager(PassManagerRef PM) {
    LLVMJNI.DisposePassManager(PassManagerRef.getCPtr(PM));
  }

  public static boolean StartMultithreaded() {
    return LLVMJNI.StartMultithreaded();
  }

  public static void StopMultithreaded() {
    LLVMJNI.StopMultithreaded();
  }

  public static boolean IsMultithreaded() {
    return LLVMJNI.IsMultithreaded();
  }

  public static boolean ParseBitcode(MemoryBufferRef MemBuf, ModuleRefOut OutModule, StringOut OutMessage) {
    return LLVMJNI.ParseBitcode(MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutModule), OutModule, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static boolean ParseBitcodeInContext(ContextRef contextRef, MemoryBufferRef MemBuf, ModuleRefOut OutModule, StringOut OutMessage) {
    return LLVMJNI.ParseBitcodeInContext(ContextRef.getCPtr(contextRef), MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutModule), OutModule, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static boolean GetBitcodeModuleInContext(ContextRef contextRef, MemoryBufferRef MemBuf, ModuleRefOut OutM, StringOut OutMessage) {
    return LLVMJNI.GetBitcodeModuleInContext(ContextRef.getCPtr(contextRef), MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutM), OutM, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static boolean GetBitcodeModule(MemoryBufferRef MemBuf, ModuleRefOut OutM, StringOut OutMessage) {
    return LLVMJNI.GetBitcodeModule(MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutM), OutM, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static int WriteBitcodeToFile(ModuleRef M, String Path) {
    return LLVMJNI.WriteBitcodeToFile(ModuleRef.getCPtr(M), Path);
  }

  public static int WriteBitcodeToFD(ModuleRef M, int FD, int ShouldClose, int Unbuffered) {
    return LLVMJNI.WriteBitcodeToFD(ModuleRef.getCPtr(M), FD, ShouldClose, Unbuffered);
  }

  public static void AddArgumentPromotionPass(PassManagerRef PM) {
    LLVMJNI.AddArgumentPromotionPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddConstantMergePass(PassManagerRef PM) {
    LLVMJNI.AddConstantMergePass(PassManagerRef.getCPtr(PM));
  }

  public static void AddDeadArgEliminationPass(PassManagerRef PM) {
    LLVMJNI.AddDeadArgEliminationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddFunctionAttrsPass(PassManagerRef PM) {
    LLVMJNI.AddFunctionAttrsPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddFunctionInliningPass(PassManagerRef PM) {
    LLVMJNI.AddFunctionInliningPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddAlwaysInlinerPass(PassManagerRef PM) {
    LLVMJNI.AddAlwaysInlinerPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddGlobalDCEPass(PassManagerRef PM) {
    LLVMJNI.AddGlobalDCEPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddGlobalOptimizerPass(PassManagerRef PM) {
    LLVMJNI.AddGlobalOptimizerPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddIPConstantPropagationPass(PassManagerRef PM) {
    LLVMJNI.AddIPConstantPropagationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddPruneEHPass(PassManagerRef PM) {
    LLVMJNI.AddPruneEHPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddIPSCCPPass(PassManagerRef PM) {
    LLVMJNI.AddIPSCCPPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddInternalizePass(PassManagerRef arg0, int AllButMain) {
    LLVMJNI.AddInternalizePass(PassManagerRef.getCPtr(arg0), AllButMain);
  }

  public static void AddStripDeadPrototypesPass(PassManagerRef PM) {
    LLVMJNI.AddStripDeadPrototypesPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddStripSymbolsPass(PassManagerRef PM) {
    LLVMJNI.AddStripSymbolsPass(PassManagerRef.getCPtr(PM));
  }

  public static PassManagerBuilderRef PassManagerBuilderCreate() {
    long cPtr = LLVMJNI.PassManagerBuilderCreate();
    return (cPtr == 0) ? null : new PassManagerBuilderRef(cPtr, false);
  }

  public static void PassManagerBuilderDispose(PassManagerBuilderRef PMB) {
    LLVMJNI.PassManagerBuilderDispose(PassManagerBuilderRef.getCPtr(PMB));
  }

  public static void PassManagerBuilderSetOptLevel(PassManagerBuilderRef PMB, int OptLevel) {
    LLVMJNI.PassManagerBuilderSetOptLevel(PassManagerBuilderRef.getCPtr(PMB), OptLevel);
  }

  public static void PassManagerBuilderSetSizeLevel(PassManagerBuilderRef PMB, int SizeLevel) {
    LLVMJNI.PassManagerBuilderSetSizeLevel(PassManagerBuilderRef.getCPtr(PMB), SizeLevel);
  }

  public static void PassManagerBuilderSetDisableUnitAtATime(PassManagerBuilderRef PMB, boolean Value) {
    LLVMJNI.PassManagerBuilderSetDisableUnitAtATime(PassManagerBuilderRef.getCPtr(PMB), Value);
  }

  public static void PassManagerBuilderSetDisableUnrollLoops(PassManagerBuilderRef PMB, boolean Value) {
    LLVMJNI.PassManagerBuilderSetDisableUnrollLoops(PassManagerBuilderRef.getCPtr(PMB), Value);
  }

  public static void PassManagerBuilderSetDisableSimplifyLibCalls(PassManagerBuilderRef PMB, boolean Value) {
    LLVMJNI.PassManagerBuilderSetDisableSimplifyLibCalls(PassManagerBuilderRef.getCPtr(PMB), Value);
  }

  public static void PassManagerBuilderUseInlinerWithThreshold(PassManagerBuilderRef PMB, int Threshold) {
    LLVMJNI.PassManagerBuilderUseInlinerWithThreshold(PassManagerBuilderRef.getCPtr(PMB), Threshold);
  }

  public static void PassManagerBuilderPopulateFunctionPassManager(PassManagerBuilderRef PMB, PassManagerRef PM) {
    LLVMJNI.PassManagerBuilderPopulateFunctionPassManager(PassManagerBuilderRef.getCPtr(PMB), PassManagerRef.getCPtr(PM));
  }

  public static void PassManagerBuilderPopulateModulePassManager(PassManagerBuilderRef PMB, PassManagerRef PM) {
    LLVMJNI.PassManagerBuilderPopulateModulePassManager(PassManagerBuilderRef.getCPtr(PMB), PassManagerRef.getCPtr(PM));
  }

  public static void PassManagerBuilderPopulateLTOPassManager(PassManagerBuilderRef PMB, PassManagerRef PM, boolean Internalize, boolean RunInliner) {
    LLVMJNI.PassManagerBuilderPopulateLTOPassManager(PassManagerBuilderRef.getCPtr(PMB), PassManagerRef.getCPtr(PM), Internalize, RunInliner);
  }

  public static void AddAggressiveDCEPass(PassManagerRef PM) {
    LLVMJNI.AddAggressiveDCEPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddCFGSimplificationPass(PassManagerRef PM) {
    LLVMJNI.AddCFGSimplificationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddDeadStoreEliminationPass(PassManagerRef PM) {
    LLVMJNI.AddDeadStoreEliminationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddGVNPass(PassManagerRef PM) {
    LLVMJNI.AddGVNPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddIndVarSimplifyPass(PassManagerRef PM) {
    LLVMJNI.AddIndVarSimplifyPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddInstructionCombiningPass(PassManagerRef PM) {
    LLVMJNI.AddInstructionCombiningPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddJumpThreadingPass(PassManagerRef PM) {
    LLVMJNI.AddJumpThreadingPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLICMPass(PassManagerRef PM) {
    LLVMJNI.AddLICMPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopDeletionPass(PassManagerRef PM) {
    LLVMJNI.AddLoopDeletionPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopIdiomPass(PassManagerRef PM) {
    LLVMJNI.AddLoopIdiomPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopRotatePass(PassManagerRef PM) {
    LLVMJNI.AddLoopRotatePass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopUnrollPass(PassManagerRef PM) {
    LLVMJNI.AddLoopUnrollPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopUnswitchPass(PassManagerRef PM) {
    LLVMJNI.AddLoopUnswitchPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddMemCpyOptPass(PassManagerRef PM) {
    LLVMJNI.AddMemCpyOptPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddPromoteMemoryToRegisterPass(PassManagerRef PM) {
    LLVMJNI.AddPromoteMemoryToRegisterPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddReassociatePass(PassManagerRef PM) {
    LLVMJNI.AddReassociatePass(PassManagerRef.getCPtr(PM));
  }

  public static void AddSCCPPass(PassManagerRef PM) {
    LLVMJNI.AddSCCPPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddScalarReplAggregatesPass(PassManagerRef PM) {
    LLVMJNI.AddScalarReplAggregatesPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddScalarReplAggregatesPassSSA(PassManagerRef PM) {
    LLVMJNI.AddScalarReplAggregatesPassSSA(PassManagerRef.getCPtr(PM));
  }

  public static void AddScalarReplAggregatesPassWithThreshold(PassManagerRef PM, int Threshold) {
    LLVMJNI.AddScalarReplAggregatesPassWithThreshold(PassManagerRef.getCPtr(PM), Threshold);
  }

  public static void AddSimplifyLibCallsPass(PassManagerRef PM) {
    LLVMJNI.AddSimplifyLibCallsPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddTailCallEliminationPass(PassManagerRef PM) {
    LLVMJNI.AddTailCallEliminationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddConstantPropagationPass(PassManagerRef PM) {
    LLVMJNI.AddConstantPropagationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddDemoteMemoryToRegisterPass(PassManagerRef PM) {
    LLVMJNI.AddDemoteMemoryToRegisterPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddVerifierPass(PassManagerRef PM) {
    LLVMJNI.AddVerifierPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddCorrelatedValuePropagationPass(PassManagerRef PM) {
    LLVMJNI.AddCorrelatedValuePropagationPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddEarlyCSEPass(PassManagerRef PM) {
    LLVMJNI.AddEarlyCSEPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLowerExpectIntrinsicPass(PassManagerRef PM) {
    LLVMJNI.AddLowerExpectIntrinsicPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddTypeBasedAliasAnalysisPass(PassManagerRef PM) {
    LLVMJNI.AddTypeBasedAliasAnalysisPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddBasicAliasAnalysisPass(PassManagerRef PM) {
    LLVMJNI.AddBasicAliasAnalysisPass(PassManagerRef.getCPtr(PM));
  }

  public static void AddBBVectorizePass(PassManagerRef PM) {
    LLVMJNI.AddBBVectorizePass(PassManagerRef.getCPtr(PM));
  }

  public static void AddLoopVectorizePass(PassManagerRef PM) {
    LLVMJNI.AddLoopVectorizePass(PassManagerRef.getCPtr(PM));
  }

  public static void AddSLPVectorizePass(PassManagerRef PM) {
    LLVMJNI.AddSLPVectorizePass(PassManagerRef.getCPtr(PM));
  }

  public static void InitializeX86TargetInfo() {
    LLVMJNI.InitializeX86TargetInfo();
  }

  public static void InitializeARMTargetInfo() {
    LLVMJNI.InitializeARMTargetInfo();
  }

  public static void InitializeX86AsmPrinter() {
    LLVMJNI.InitializeX86AsmPrinter();
  }

  public static void InitializeARMAsmPrinter() {
    LLVMJNI.InitializeARMAsmPrinter();
  }

  public static void InitializeX86AsmParser() {
    LLVMJNI.InitializeX86AsmParser();
  }

  public static void InitializeARMAsmParser() {
    LLVMJNI.InitializeARMAsmParser();
  }

  public static void InitializeX86Disassembler() {
    LLVMJNI.InitializeX86Disassembler();
  }

  public static void InitializeARMDisassembler() {
    LLVMJNI.InitializeARMDisassembler();
  }

  public static void InitializeAllTargetInfos() {
    LLVMJNI.InitializeAllTargetInfos();
  }

  public static void InitializeAllTargets() {
    LLVMJNI.InitializeAllTargets();
  }

  public static void InitializeAllTargetMCs() {
    LLVMJNI.InitializeAllTargetMCs();
  }

  public static void InitializeAllAsmPrinters() {
    LLVMJNI.InitializeAllAsmPrinters();
  }

  public static void InitializeAllAsmParsers() {
    LLVMJNI.InitializeAllAsmParsers();
  }

  public static void InitializeAllDisassemblers() {
    LLVMJNI.InitializeAllDisassemblers();
  }

  public static TargetDataRef CreateTargetData(String StringRep) {
    long cPtr = LLVMJNI.CreateTargetData(StringRep);
    return (cPtr == 0) ? null : new TargetDataRef(cPtr, false);
  }

  public static void AddTargetData(TargetDataRef arg0, PassManagerRef arg1) {
    LLVMJNI.AddTargetData(TargetDataRef.getCPtr(arg0), PassManagerRef.getCPtr(arg1));
  }

  public static void AddTargetLibraryInfo(TargetLibraryInfoRef arg0, PassManagerRef arg1) {
    LLVMJNI.AddTargetLibraryInfo(TargetLibraryInfoRef.getCPtr(arg0), PassManagerRef.getCPtr(arg1));
  }

  public static String CopyStringRepOfTargetData(TargetDataRef arg0) {
    return LLVMJNI.CopyStringRepOfTargetData(TargetDataRef.getCPtr(arg0));
  }

  public static ByteOrdering ByteOrder(TargetDataRef arg0) {
    return ByteOrdering.swigToEnum(LLVMJNI.ByteOrder(TargetDataRef.getCPtr(arg0)));
  }

  public static int PointerSize(TargetDataRef arg0) {
    return LLVMJNI.PointerSize(TargetDataRef.getCPtr(arg0));
  }

  public static int PointerSizeForAS(TargetDataRef arg0, int AS) {
    return LLVMJNI.PointerSizeForAS(TargetDataRef.getCPtr(arg0), AS);
  }

  public static TypeRef IntPtrType(TargetDataRef arg0) {
    long cPtr = LLVMJNI.IntPtrType(TargetDataRef.getCPtr(arg0));
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static TypeRef IntPtrTypeForAS(TargetDataRef arg0, int AS) {
    long cPtr = LLVMJNI.IntPtrTypeForAS(TargetDataRef.getCPtr(arg0), AS);
    return (cPtr == 0) ? null : new TypeRef(cPtr, false);
  }

  public static java.math.BigInteger SizeOfTypeInBits(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.SizeOfTypeInBits(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static java.math.BigInteger StoreSizeOfType(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.StoreSizeOfType(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static java.math.BigInteger ABISizeOfType(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.ABISizeOfType(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static int ABIAlignmentOfType(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.ABIAlignmentOfType(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static int CallFrameAlignmentOfType(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.CallFrameAlignmentOfType(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static int PreferredAlignmentOfType(TargetDataRef arg0, TypeRef arg1) {
    return LLVMJNI.PreferredAlignmentOfType(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(arg1));
  }

  public static int PreferredAlignmentOfGlobal(TargetDataRef arg0, ValueRef GlobalVar) {
    return LLVMJNI.PreferredAlignmentOfGlobal(TargetDataRef.getCPtr(arg0), ValueRef.getCPtr(GlobalVar));
  }

  public static int ElementAtOffset(TargetDataRef arg0, TypeRef StructTy, java.math.BigInteger Offset) {
    return LLVMJNI.ElementAtOffset(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(StructTy), Offset);
  }

  public static java.math.BigInteger OffsetOfElement(TargetDataRef arg0, TypeRef StructTy, int Element) {
    return LLVMJNI.OffsetOfElement(TargetDataRef.getCPtr(arg0), TypeRef.getCPtr(StructTy), Element);
  }

  public static void DisposeTargetData(TargetDataRef arg0) {
    LLVMJNI.DisposeTargetData(TargetDataRef.getCPtr(arg0));
  }

  public static TargetRef GetFirstTarget() {
    long cPtr = LLVMJNI.GetFirstTarget();
    return (cPtr == 0) ? null : new TargetRef(cPtr, false);
  }

  public static TargetRef GetNextTarget(TargetRef T) {
    long cPtr = LLVMJNI.GetNextTarget(TargetRef.getCPtr(T));
    return (cPtr == 0) ? null : new TargetRef(cPtr, false);
  }

  public static String GetTargetName(TargetRef T) {
    return LLVMJNI.GetTargetName(TargetRef.getCPtr(T));
  }

  public static String GetTargetDescription(TargetRef T) {
    return LLVMJNI.GetTargetDescription(TargetRef.getCPtr(T));
  }

  public static boolean TargetHasJIT(TargetRef T) {
    return LLVMJNI.TargetHasJIT(TargetRef.getCPtr(T));
  }

  public static boolean TargetHasTargetMachine(TargetRef T) {
    return LLVMJNI.TargetHasTargetMachine(TargetRef.getCPtr(T));
  }

  public static boolean TargetHasAsmBackend(TargetRef T) {
    return LLVMJNI.TargetHasAsmBackend(TargetRef.getCPtr(T));
  }

  public static TargetMachineRef CreateTargetMachine(TargetRef T, String Triple, String CPU, String Features, CodeGenOptLevel Level, RelocMode Reloc, CodeModel CodeModel) {
    long cPtr = LLVMJNI.CreateTargetMachine(TargetRef.getCPtr(T), Triple, CPU, Features, Level.swigValue(), Reloc.swigValue(), CodeModel.swigValue());
    return (cPtr == 0) ? null : new TargetMachineRef(cPtr, false);
  }

  public static void DisposeTargetMachine(TargetMachineRef T) {
    LLVMJNI.DisposeTargetMachine(TargetMachineRef.getCPtr(T));
  }

  public static TargetRef GetTargetMachineTarget(TargetMachineRef T) {
    long cPtr = LLVMJNI.GetTargetMachineTarget(TargetMachineRef.getCPtr(T));
    return (cPtr == 0) ? null : new TargetRef(cPtr, false);
  }

  public static String GetTargetMachineTriple(TargetMachineRef T) {
    return LLVMJNI.GetTargetMachineTriple(TargetMachineRef.getCPtr(T));
  }

  public static String GetTargetMachineCPU(TargetMachineRef T) {
    return LLVMJNI.GetTargetMachineCPU(TargetMachineRef.getCPtr(T));
  }

  public static String GetTargetMachineFeatureString(TargetMachineRef T) {
    return LLVMJNI.GetTargetMachineFeatureString(TargetMachineRef.getCPtr(T));
  }

  public static TargetDataRef GetTargetMachineData(TargetMachineRef T) {
    long cPtr = LLVMJNI.GetTargetMachineData(TargetMachineRef.getCPtr(T));
    return (cPtr == 0) ? null : new TargetDataRef(cPtr, false);
  }

  public static boolean TargetMachineEmitToFile(TargetMachineRef T, ModuleRef M, String Filename, CodeGenFileType codegen, StringOut ErrorMessage) {
    return LLVMJNI.TargetMachineEmitToFile(TargetMachineRef.getCPtr(T), ModuleRef.getCPtr(M), Filename, codegen.swigValue(), StringOut.getCPtr(ErrorMessage), ErrorMessage);
  }

  public static boolean TargetMachineEmitToMemoryBuffer(TargetMachineRef T, ModuleRef M, CodeGenFileType codegen, StringOut ErrorMessage, MemoryBufferRefOut OutMemBuf) {
    return LLVMJNI.TargetMachineEmitToMemoryBuffer(TargetMachineRef.getCPtr(T), ModuleRef.getCPtr(M), codegen.swigValue(), StringOut.getCPtr(ErrorMessage), ErrorMessage, MemoryBufferRefOut.getCPtr(OutMemBuf), OutMemBuf);
  }

  public static String getLlvmHostTriple() {
    return LLVMJNI.llvmHostTriple_get();
  }

  public static boolean ParseIR(MemoryBufferRef MemBuf, ModuleRefOut OutModule, StringOut OutMessage) {
    return LLVMJNI.ParseIR(MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutModule), OutModule, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static boolean ParseIRInContext(ContextRef contextRef, MemoryBufferRef MemBuf, ModuleRefOut OutModule, StringOut OutMessage) {
    return LLVMJNI.ParseIRInContext(ContextRef.getCPtr(contextRef), MemoryBufferRef.getCPtr(MemBuf), ModuleRefOut.getCPtr(OutModule), OutModule, StringOut.getCPtr(OutMessage), OutMessage);
  }

  public static TargetRef LookupTarget(String Triple, StringOut ErrorMessage) {
    long cPtr = LLVMJNI.LookupTarget(Triple, StringOut.getCPtr(ErrorMessage), ErrorMessage);
    return (cPtr == 0) ? null : new TargetRef(cPtr, false);
  }

  public static boolean TargetMachineHasMCRelaxAll(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCRelaxAll(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCRelaxAll(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCRelaxAll(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineHasMCSaveTempLabels(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCSaveTempLabels(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCSaveTempLabels(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCSaveTempLabels(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineHasMCNoExecStack(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCNoExecStack(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCNoExecStack(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCNoExecStack(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineHasMCUseLoc(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCUseLoc(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCUseLoc(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCUseLoc(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineHasMCUseCFI(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCUseCFI(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCUseCFI(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCUseCFI(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineHasMCUseDwarfDirectory(TargetMachineRef T) {
    return LLVMJNI.TargetMachineHasMCUseDwarfDirectory(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetMCUseDwarfDirectory(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetMCUseDwarfDirectory(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineGetAsmVerbosityDefault(TargetMachineRef T) {
    return LLVMJNI.TargetMachineGetAsmVerbosityDefault(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetAsmVerbosityDefault(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetAsmVerbosityDefault(TargetMachineRef.getCPtr(T), Value);
  }

  public static boolean TargetMachineGetDataSections(TargetMachineRef T) {
    return LLVMJNI.TargetMachineGetDataSections(TargetMachineRef.getCPtr(T));
  }

  public static boolean TargetMachineGetFunctionSections(TargetMachineRef T) {
    return LLVMJNI.TargetMachineGetFunctionSections(TargetMachineRef.getCPtr(T));
  }

  public static void TargetMachineSetDataSections(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetDataSections(TargetMachineRef.getCPtr(T), Value);
  }

  public static void TargetMachineSetFunctionSections(TargetMachineRef T, boolean Value) {
    LLVMJNI.TargetMachineSetFunctionSections(TargetMachineRef.getCPtr(T), Value);
  }

  public static TargetOptionsRef GetTargetMachineTargetOptions(TargetMachineRef T) {
    long cPtr = LLVMJNI.GetTargetMachineTargetOptions(TargetMachineRef.getCPtr(T));
    return (cPtr == 0) ? null : new TargetOptionsRef(cPtr, false);
  }

  public static boolean TargetOptionsGetPrintMachineCode(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetPrintMachineCode(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetPrintMachineCode(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetPrintMachineCode(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetNoFramePointerElim(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetNoFramePointerElim(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetNoFramePointerElim(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetNoFramePointerElim(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetNoFramePointerElimNonLeaf(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetNoFramePointerElimNonLeaf(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetNoFramePointerElimNonLeaf(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetNoFramePointerElimNonLeaf(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetLessPreciseFPMADOption(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetLessPreciseFPMADOption(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetLessPreciseFPMADOption(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetLessPreciseFPMADOption(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetUnsafeFPMath(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetUnsafeFPMath(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetUnsafeFPMath(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetUnsafeFPMath(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetNoInfsFPMath(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetNoInfsFPMath(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetNoInfsFPMath(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetNoInfsFPMath(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetNoNaNsFPMath(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetNoNaNsFPMath(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetNoNaNsFPMath(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetNoNaNsFPMath(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetHonorSignDependentRoundingFPMathOption(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetHonorSignDependentRoundingFPMathOption(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetHonorSignDependentRoundingFPMathOption(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetHonorSignDependentRoundingFPMathOption(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetUseSoftFloat(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetUseSoftFloat(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetUseSoftFloat(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetUseSoftFloat(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetNoZerosInBSS(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetNoZerosInBSS(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetNoZerosInBSS(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetNoZerosInBSS(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetJITEmitDebugInfo(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetJITEmitDebugInfo(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetJITEmitDebugInfo(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetJITEmitDebugInfo(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetJITEmitDebugInfoToDisk(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetJITEmitDebugInfoToDisk(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetJITEmitDebugInfoToDisk(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetJITEmitDebugInfoToDisk(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetGuaranteedTailCallOpt(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetGuaranteedTailCallOpt(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetGuaranteedTailCallOpt(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetGuaranteedTailCallOpt(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetDisableTailCalls(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetDisableTailCalls(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetDisableTailCalls(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetDisableTailCalls(TargetOptionsRef.getCPtr(O), V);
  }

  public static int TargetOptionsGetStackAlignmentOverride(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetStackAlignmentOverride(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetStackAlignmentOverride(TargetOptionsRef O, int V) {
    LLVMJNI.TargetOptionsSetStackAlignmentOverride(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetRealignStack(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetRealignStack(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetRealignStack(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetRealignStack(TargetOptionsRef.getCPtr(O), V);
  }

  public static int TargetOptionsGetSSPBufferSize(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetSSPBufferSize(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetSSPBufferSize(TargetOptionsRef O, int V) {
    LLVMJNI.TargetOptionsSetSSPBufferSize(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetEnableFastISel(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetEnableFastISel(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetEnableFastISel(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetEnableFastISel(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetPositionIndependentExecutable(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetPositionIndependentExecutable(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetPositionIndependentExecutable(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetPositionIndependentExecutable(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetEnableSegmentedStacks(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetEnableSegmentedStacks(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetEnableSegmentedStacks(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetEnableSegmentedStacks(TargetOptionsRef.getCPtr(O), V);
  }

  public static boolean TargetOptionsGetUseInitArray(TargetOptionsRef O) {
    return LLVMJNI.TargetOptionsGetUseInitArray(TargetOptionsRef.getCPtr(O));
  }

  public static void TargetOptionsSetUseInitArray(TargetOptionsRef O, boolean V) {
    LLVMJNI.TargetOptionsSetUseInitArray(TargetOptionsRef.getCPtr(O), V);
  }

  public static FloatABIType TargetOptionsGetFloatABIType(TargetOptionsRef O) {
    return FloatABIType.swigToEnum(LLVMJNI.TargetOptionsGetFloatABIType(TargetOptionsRef.getCPtr(O)));
  }

  public static void TargetOptionsSetFloatABIType(TargetOptionsRef O, FloatABIType V) {
    LLVMJNI.TargetOptionsSetFloatABIType(TargetOptionsRef.getCPtr(O), V.swigValue());
  }

  public static FPOpFusionMode TargetOptionsGetAllowFPOpFusion(TargetOptionsRef O) {
    return FPOpFusionMode.swigToEnum(LLVMJNI.TargetOptionsGetAllowFPOpFusion(TargetOptionsRef.getCPtr(O)));
  }

  public static void TargetOptionsSetAllowFPOpFusion(TargetOptionsRef O, FPOpFusionMode V) {
    LLVMJNI.TargetOptionsSetAllowFPOpFusion(TargetOptionsRef.getCPtr(O), V.swigValue());
  }

  public static int TargetMachineAssembleToOutputStream(TargetMachineRef TM, MemoryBufferRef Mem, java.io.OutputStream OutputStream, boolean RelaxAll, boolean NoExecStack, StringOut ErrorMessage) {
    return LLVMJNI.TargetMachineAssembleToOutputStream(TargetMachineRef.getCPtr(TM), MemoryBufferRef.getCPtr(Mem), OutputStream, RelaxAll, NoExecStack, StringOut.getCPtr(ErrorMessage), ErrorMessage);
  }

  public static boolean TargetMachineEmitToOutputStream(TargetMachineRef T, ModuleRef M, java.io.OutputStream OutputStream, CodeGenFileType codegen, StringOut ErrorMessage) {
    return LLVMJNI.TargetMachineEmitToOutputStream(TargetMachineRef.getCPtr(T), ModuleRef.getCPtr(M), OutputStream, codegen.swigValue(), StringOut.getCPtr(ErrorMessage), ErrorMessage);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy