sig
type llcontext
type llmodule
type lltype
type lltypehandle
type llvalue
type lluse
type llbasicblock
type llbuilder
type llmemorybuffer
module TypeKind :
sig
type t =
Void
| Float
| Double
| X86fp80
| Fp128
| Ppc_fp128
| Label
| Integer
| Function
| Struct
| Array
| Pointer
| Opaque
| Vector
| Metadata
end
module Linkage :
sig
type t =
External
| Available_externally
| Link_once
| Link_once_odr
| Weak
| Weak_odr
| Appending
| Internal
| Private
| Dllimport
| Dllexport
| External_weak
| Ghost
| Common
| Linker_private
end
module Visibility : sig type t = Default | Hidden | Protected end
module CallConv :
sig
val c : int
val fast : int
val cold : int
val x86_stdcall : int
val x86_fastcall : int
end
module Attribute :
sig
type t =
Zext
| Sext
| Noreturn
| Inreg
| Structret
| Nounwind
| Noalias
| Byval
| Nest
| Readnone
| Readonly
| Noinline
| Alwaysinline
| Optsize
| Ssp
| Sspreq
| Alignment of int
| Nocapture
| Noredzone
| Noimplicitfloat
| Naked
| Inlinehint
| Stackalignment of int
end
module Icmp :
sig type t = Eq | Ne | Ugt | Uge | Ult | Ule | Sgt | Sge | Slt | Sle end
module Fcmp :
sig
type t =
False
| Oeq
| Ogt
| Oge
| Olt
| Ole
| One
| Ord
| Uno
| Ueq
| Ugt
| Uge
| Ult
| Ule
| Une
| True
end
type ('a, 'b) llpos = At_end of 'a | Before of 'b
type ('a, 'b) llrev_pos = At_start of 'a | After of 'b
exception IoError of string
external create_context : unit -> Llvm.llcontext = "llvm_create_context"
external dispose_context : Llvm.llcontext -> unit = "llvm_dispose_context"
external global_context : unit -> Llvm.llcontext = "llvm_global_context"
external mdkind_id : Llvm.llcontext -> string -> int = "llvm_mdkind_id"
external create_module : Llvm.llcontext -> string -> Llvm.llmodule
= "llvm_create_module"
external dispose_module : Llvm.llmodule -> unit = "llvm_dispose_module"
external target_triple : Llvm.llmodule -> string = "llvm_target_triple"
external set_target_triple : string -> Llvm.llmodule -> unit
= "llvm_set_target_triple"
external data_layout : Llvm.llmodule -> string = "llvm_data_layout"
external set_data_layout : string -> Llvm.llmodule -> unit
= "llvm_set_data_layout"
external define_type_name : string -> Llvm.lltype -> Llvm.llmodule -> bool
= "llvm_add_type_name"
external delete_type_name : string -> Llvm.llmodule -> unit
= "llvm_delete_type_name"
external type_by_name : Llvm.llmodule -> string -> Llvm.lltype option
= "llvm_type_by_name"
external dump_module : Llvm.llmodule -> unit = "llvm_dump_module"
external set_module_inline_asm : Llvm.llmodule -> string -> unit
= "llvm_set_module_inline_asm"
external classify_type : Llvm.lltype -> Llvm.TypeKind.t
= "llvm_classify_type"
external type_context : Llvm.lltype -> Llvm.llcontext = "llvm_type_context"
val string_of_lltype : Llvm.lltype -> string
external i1_type : Llvm.llcontext -> Llvm.lltype = "llvm_i1_type"
external i8_type : Llvm.llcontext -> Llvm.lltype = "llvm_i8_type"
external i16_type : Llvm.llcontext -> Llvm.lltype = "llvm_i16_type"
external i32_type : Llvm.llcontext -> Llvm.lltype = "llvm_i32_type"
external i64_type : Llvm.llcontext -> Llvm.lltype = "llvm_i64_type"
external integer_type : Llvm.llcontext -> int -> Llvm.lltype
= "llvm_integer_type"
external integer_bitwidth : Llvm.lltype -> int = "llvm_integer_bitwidth"
external float_type : Llvm.llcontext -> Llvm.lltype = "llvm_float_type"
external double_type : Llvm.llcontext -> Llvm.lltype = "llvm_double_type"
external x86fp80_type : Llvm.llcontext -> Llvm.lltype = "llvm_x86fp80_type"
external fp128_type : Llvm.llcontext -> Llvm.lltype = "llvm_fp128_type"
external ppc_fp128_type : Llvm.llcontext -> Llvm.lltype
= "llvm_ppc_fp128_type"
external function_type : Llvm.lltype -> Llvm.lltype array -> Llvm.lltype
= "llvm_function_type"
external var_arg_function_type :
Llvm.lltype -> Llvm.lltype array -> Llvm.lltype
= "llvm_var_arg_function_type"
external is_var_arg : Llvm.lltype -> bool = "llvm_is_var_arg"
external return_type : Llvm.lltype -> Llvm.lltype = "LLVMGetReturnType"
external param_types : Llvm.lltype -> Llvm.lltype array
= "llvm_param_types"
external struct_type : Llvm.llcontext -> Llvm.lltype array -> Llvm.lltype
= "llvm_struct_type"
external packed_struct_type :
Llvm.llcontext -> Llvm.lltype array -> Llvm.lltype
= "llvm_packed_struct_type"
external struct_element_types : Llvm.lltype -> Llvm.lltype array
= "llvm_struct_element_types"
external is_packed : Llvm.lltype -> bool = "llvm_is_packed"
external array_type : Llvm.lltype -> int -> Llvm.lltype = "llvm_array_type"
external pointer_type : Llvm.lltype -> Llvm.lltype = "llvm_pointer_type"
external qualified_pointer_type : Llvm.lltype -> int -> Llvm.lltype
= "llvm_qualified_pointer_type"
external vector_type : Llvm.lltype -> int -> Llvm.lltype
= "llvm_vector_type"
external element_type : Llvm.lltype -> Llvm.lltype = "LLVMGetElementType"
external array_length : Llvm.lltype -> int = "llvm_array_length"
external address_space : Llvm.lltype -> int = "llvm_address_space"
external vector_size : Llvm.lltype -> int = "llvm_vector_size"
external opaque_type : Llvm.llcontext -> Llvm.lltype = "llvm_opaque_type"
external void_type : Llvm.llcontext -> Llvm.lltype = "llvm_void_type"
external label_type : Llvm.llcontext -> Llvm.lltype = "llvm_label_type"
external handle_to_type : Llvm.lltype -> Llvm.lltypehandle
= "llvm_handle_to_type"
external type_of_handle : Llvm.lltypehandle -> Llvm.lltype
= "llvm_type_of_handle"
external refine_type : Llvm.lltype -> Llvm.lltype -> unit
= "llvm_refine_type"
external type_of : Llvm.llvalue -> Llvm.lltype = "llvm_type_of"
external value_name : Llvm.llvalue -> string = "llvm_value_name"
external set_value_name : string -> Llvm.llvalue -> unit
= "llvm_set_value_name"
external dump_value : Llvm.llvalue -> unit = "llvm_dump_value"
external replace_all_uses_with : Llvm.llvalue -> Llvm.llvalue -> unit
= "LLVMReplaceAllUsesWith"
external use_begin : Llvm.llvalue -> Llvm.lluse option = "llvm_use_begin"
external use_succ : Llvm.lluse -> Llvm.lluse option = "llvm_use_succ"
external user : Llvm.lluse -> Llvm.llvalue = "llvm_user"
external used_value : Llvm.lluse -> Llvm.llvalue = "llvm_used_value"
val iter_uses : (Llvm.lluse -> unit) -> Llvm.llvalue -> unit
val fold_left_uses : ('a -> Llvm.lluse -> 'a) -> 'a -> Llvm.llvalue -> 'a
val fold_right_uses : (Llvm.lluse -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
external operand : Llvm.llvalue -> int -> Llvm.llvalue = "llvm_operand"
external set_operand : Llvm.llvalue -> int -> Llvm.llvalue -> unit
= "llvm_set_operand"
external num_operands : Llvm.llvalue -> int = "llvm_num_operands"
external is_constant : Llvm.llvalue -> bool = "llvm_is_constant"
external const_null : Llvm.lltype -> Llvm.llvalue = "LLVMConstNull"
external const_all_ones : Llvm.lltype -> Llvm.llvalue = "LLVMConstAllOnes"
external const_pointer_null : Llvm.lltype -> Llvm.llvalue
= "LLVMConstPointerNull"
external undef : Llvm.lltype -> Llvm.llvalue = "LLVMGetUndef"
external is_null : Llvm.llvalue -> bool = "llvm_is_null"
external is_undef : Llvm.llvalue -> bool = "llvm_is_undef"
external has_metadata : Llvm.llvalue -> bool = "llvm_has_metadata"
external metadata : Llvm.llvalue -> int -> Llvm.llvalue option
= "llvm_metadata"
external set_metadata : Llvm.llvalue -> int -> Llvm.llvalue -> unit
= "llvm_set_metadata"
external clear_metadata : Llvm.llvalue -> int -> unit
= "llvm_clear_metadata"
external mdstring : Llvm.llcontext -> string -> Llvm.llvalue
= "llvm_mdstring"
external mdnode : Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_mdnode"
external const_int : Llvm.lltype -> int -> Llvm.llvalue = "llvm_const_int"
external const_of_int64 : Llvm.lltype -> Int64.t -> bool -> Llvm.llvalue
= "llvm_const_of_int64"
external const_int_of_string : Llvm.lltype -> string -> int -> Llvm.llvalue
= "llvm_const_int_of_string"
external const_float : Llvm.lltype -> float -> Llvm.llvalue
= "llvm_const_float"
external const_float_of_string : Llvm.lltype -> string -> Llvm.llvalue
= "llvm_const_float_of_string"
external const_string : Llvm.llcontext -> string -> Llvm.llvalue
= "llvm_const_string"
external const_stringz : Llvm.llcontext -> string -> Llvm.llvalue
= "llvm_const_stringz"
external const_array : Llvm.lltype -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_array"
external const_struct :
Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_struct"
external const_packed_struct :
Llvm.llcontext -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_packed_struct"
external const_vector : Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_vector"
external align_of : Llvm.lltype -> Llvm.llvalue = "LLVMAlignOf"
external size_of : Llvm.lltype -> Llvm.llvalue = "LLVMSizeOf"
external const_neg : Llvm.llvalue -> Llvm.llvalue = "LLVMConstNeg"
external const_nsw_neg : Llvm.llvalue -> Llvm.llvalue = "LLVMConstNSWNeg"
external const_nuw_neg : Llvm.llvalue -> Llvm.llvalue = "LLVMConstNUWNeg"
external const_fneg : Llvm.llvalue -> Llvm.llvalue = "LLVMConstFNeg"
external const_not : Llvm.llvalue -> Llvm.llvalue = "LLVMConstNot"
external const_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstAdd"
external const_nsw_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNSWAdd"
external const_nuw_add : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNUWAdd"
external const_fadd : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstFAdd"
external const_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstSub"
external const_nsw_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNSWSub"
external const_nuw_sub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNUWSub"
external const_fsub : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstFSub"
external const_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstMul"
external const_nsw_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNSWMul"
external const_nuw_mul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstNUWMul"
external const_fmul : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstFMul"
external const_udiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstUDiv"
external const_sdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstSDiv"
external const_exact_sdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstExactSDiv"
external const_fdiv : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstFDiv"
external const_urem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstURem"
external const_srem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstSRem"
external const_frem : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstFRem"
external const_and : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstAnd"
external const_or : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstOr"
external const_xor : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstXor"
external const_icmp :
Llvm.Icmp.t -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "llvm_const_icmp"
external const_fcmp :
Llvm.Fcmp.t -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "llvm_const_fcmp"
external const_shl : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstShl"
external const_lshr : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstLShr"
external const_ashr : Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstAShr"
external const_gep : Llvm.llvalue -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_gep"
external const_in_bounds_gep :
Llvm.llvalue -> Llvm.llvalue array -> Llvm.llvalue
= "llvm_const_in_bounds_gep"
external const_trunc : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstTrunc"
external const_sext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstSExt"
external const_zext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstZExt"
external const_fptrunc : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstFPTrunc"
external const_fpext : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstFPExt"
external const_uitofp : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstUIToFP"
external const_sitofp : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstSIToFP"
external const_fptoui : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstFPToUI"
external const_fptosi : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstFPToSI"
external const_ptrtoint : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstPtrToInt"
external const_inttoptr : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstIntToPtr"
external const_bitcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstBitCast"
external const_zext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue = "LLVMConstZExtOrBitCast"
external const_sext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue = "LLVMConstSExtOrBitCast"
external const_trunc_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue = "LLVMConstTruncOrBitCast"
external const_pointercast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstPointerCast"
external const_intcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstIntCast"
external const_fpcast : Llvm.llvalue -> Llvm.lltype -> Llvm.llvalue
= "LLVMConstFPCast"
external const_select :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstSelect"
external const_extractelement :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue = "LLVMConstExtractElement"
external const_insertelement :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstInsertElement"
external const_shufflevector :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue -> Llvm.llvalue
= "LLVMConstShuffleVector"
external const_extractvalue : Llvm.llvalue -> int array -> Llvm.llvalue
= "llvm_const_extractvalue"
external const_insertvalue :
Llvm.llvalue -> Llvm.llvalue -> int array -> Llvm.llvalue
= "llvm_const_insertvalue"
external const_inline_asm :
Llvm.lltype -> string -> string -> bool -> bool -> Llvm.llvalue
= "llvm_const_inline_asm"
external block_address : Llvm.llvalue -> Llvm.llbasicblock -> Llvm.llvalue
= "LLVMBlockAddress"
external global_parent : Llvm.llvalue -> Llvm.llmodule
= "LLVMGetGlobalParent"
external is_declaration : Llvm.llvalue -> bool = "llvm_is_declaration"
external linkage : Llvm.llvalue -> Llvm.Linkage.t = "llvm_linkage"
external set_linkage : Llvm.Linkage.t -> Llvm.llvalue -> unit
= "llvm_set_linkage"
external section : Llvm.llvalue -> string = "llvm_section"
external set_section : string -> Llvm.llvalue -> unit = "llvm_set_section"
external visibility : Llvm.llvalue -> Llvm.Visibility.t = "llvm_visibility"
external set_visibility : Llvm.Visibility.t -> Llvm.llvalue -> unit
= "llvm_set_visibility"
external alignment : Llvm.llvalue -> int = "llvm_alignment"
external set_alignment : int -> Llvm.llvalue -> unit = "llvm_set_alignment"
external declare_global :
Llvm.lltype -> string -> Llvm.llmodule -> Llvm.llvalue
= "llvm_declare_global"
external declare_qualified_global :
Llvm.lltype -> string -> int -> Llvm.llmodule -> Llvm.llvalue
= "llvm_declare_qualified_global"
external define_global :
string -> Llvm.llvalue -> Llvm.llmodule -> Llvm.llvalue
= "llvm_define_global"
external define_qualified_global :
string -> Llvm.llvalue -> int -> Llvm.llmodule -> Llvm.llvalue
= "llvm_define_qualified_global"
external lookup_global : string -> Llvm.llmodule -> Llvm.llvalue option
= "llvm_lookup_global"
external delete_global : Llvm.llvalue -> unit = "llvm_delete_global"
external global_begin :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
= "llvm_global_begin"
external global_succ :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
= "llvm_global_succ"
val iter_globals : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_left_globals :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llmodule -> 'a
external global_end :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
= "llvm_global_end"
external global_pred :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
= "llvm_global_pred"
val rev_iter_globals : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_right_globals :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llmodule -> 'a -> 'a
external is_global_constant : Llvm.llvalue -> bool
= "llvm_is_global_constant"
external set_global_constant : bool -> Llvm.llvalue -> unit
= "llvm_set_global_constant"
external global_initializer : Llvm.llvalue -> Llvm.llvalue
= "LLVMGetInitializer"
external set_initializer : Llvm.llvalue -> Llvm.llvalue -> unit
= "llvm_set_initializer"
external remove_initializer : Llvm.llvalue -> unit
= "llvm_remove_initializer"
external is_thread_local : Llvm.llvalue -> bool = "llvm_is_thread_local"
external set_thread_local : bool -> Llvm.llvalue -> unit
= "llvm_set_thread_local"
external add_alias :
Llvm.llmodule -> Llvm.lltype -> Llvm.llvalue -> string -> Llvm.llvalue
= "llvm_add_alias"
external declare_function :
string -> Llvm.lltype -> Llvm.llmodule -> Llvm.llvalue
= "llvm_declare_function"
external define_function :
string -> Llvm.lltype -> Llvm.llmodule -> Llvm.llvalue
= "llvm_define_function"
external lookup_function : string -> Llvm.llmodule -> Llvm.llvalue option
= "llvm_lookup_function"
external delete_function : Llvm.llvalue -> unit = "llvm_delete_function"
external function_begin :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
= "llvm_function_begin"
external function_succ :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llpos
= "llvm_function_succ"
val iter_functions : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_left_functions :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llmodule -> 'a
external function_end :
Llvm.llmodule -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
= "llvm_function_end"
external function_pred :
Llvm.llvalue -> (Llvm.llmodule, Llvm.llvalue) Llvm.llrev_pos
= "llvm_function_pred"
val rev_iter_functions : (Llvm.llvalue -> unit) -> Llvm.llmodule -> unit
val fold_right_functions :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llmodule -> 'a -> 'a
external is_intrinsic : Llvm.llvalue -> bool = "llvm_is_intrinsic"
external function_call_conv : Llvm.llvalue -> int
= "llvm_function_call_conv"
external set_function_call_conv : int -> Llvm.llvalue -> unit
= "llvm_set_function_call_conv"
external gc : Llvm.llvalue -> string option = "llvm_gc"
external set_gc : string option -> Llvm.llvalue -> unit = "llvm_set_gc"
val add_function_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val remove_function_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
external params : Llvm.llvalue -> Llvm.llvalue array = "llvm_params"
external param : Llvm.llvalue -> int -> Llvm.llvalue = "llvm_param"
external param_parent : Llvm.llvalue -> Llvm.llvalue = "LLVMGetParamParent"
external param_begin :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llpos
= "llvm_param_begin"
external param_succ :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llpos
= "llvm_param_succ"
val iter_params : (Llvm.llvalue -> unit) -> Llvm.llvalue -> unit
val fold_left_params :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llvalue -> 'a
external param_end :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llrev_pos
= "llvm_param_end"
external param_pred :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llvalue) Llvm.llrev_pos
= "llvm_param_pred"
val rev_iter_params : (Llvm.llvalue -> unit) -> Llvm.llvalue -> unit
val fold_right_params :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
val add_param_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
val remove_param_attr : Llvm.llvalue -> Llvm.Attribute.t -> unit
external set_param_alignment : Llvm.llvalue -> int -> unit
= "llvm_set_param_alignment"
external basic_blocks : Llvm.llvalue -> Llvm.llbasicblock array
= "llvm_basic_blocks"
external entry_block : Llvm.llvalue -> Llvm.llbasicblock
= "LLVMGetEntryBasicBlock"
external delete_block : Llvm.llbasicblock -> unit = "llvm_delete_block"
external append_block :
Llvm.llcontext -> string -> Llvm.llvalue -> Llvm.llbasicblock
= "llvm_append_block"
external insert_block :
Llvm.llcontext -> string -> Llvm.llbasicblock -> Llvm.llbasicblock
= "llvm_insert_block"
external block_parent : Llvm.llbasicblock -> Llvm.llvalue
= "LLVMGetBasicBlockParent"
external block_begin :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llpos
= "llvm_block_begin"
external block_succ :
Llvm.llbasicblock -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llpos
= "llvm_block_succ"
val iter_blocks : (Llvm.llbasicblock -> unit) -> Llvm.llvalue -> unit
val fold_left_blocks :
('a -> Llvm.llbasicblock -> 'a) -> 'a -> Llvm.llvalue -> 'a
external block_end :
Llvm.llvalue -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llrev_pos
= "llvm_block_end"
external block_pred :
Llvm.llbasicblock -> (Llvm.llvalue, Llvm.llbasicblock) Llvm.llrev_pos
= "llvm_block_pred"
val rev_iter_blocks : (Llvm.llbasicblock -> unit) -> Llvm.llvalue -> unit
val fold_right_blocks :
(Llvm.llbasicblock -> 'a -> 'a) -> Llvm.llvalue -> 'a -> 'a
external value_of_block : Llvm.llbasicblock -> Llvm.llvalue
= "LLVMBasicBlockAsValue"
external value_is_block : Llvm.llvalue -> bool = "llvm_value_is_block"
external block_of_value : Llvm.llvalue -> Llvm.llbasicblock
= "LLVMValueAsBasicBlock"
external instr_parent : Llvm.llvalue -> Llvm.llbasicblock
= "LLVMGetInstructionParent"
external instr_begin :
Llvm.llbasicblock -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos
= "llvm_instr_begin"
external instr_succ :
Llvm.llvalue -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos
= "llvm_instr_succ"
val iter_instrs : (Llvm.llvalue -> unit) -> Llvm.llbasicblock -> unit
val fold_left_instrs :
('a -> Llvm.llvalue -> 'a) -> 'a -> Llvm.llbasicblock -> 'a
external instr_end :
Llvm.llbasicblock -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llrev_pos
= "llvm_instr_end"
external instr_pred :
Llvm.llvalue -> (Llvm.llbasicblock, Llvm.llvalue) Llvm.llrev_pos
= "llvm_instr_pred"
val fold_right_instrs :
(Llvm.llvalue -> 'a -> 'a) -> Llvm.llbasicblock -> 'a -> 'a
external instruction_call_conv : Llvm.llvalue -> int
= "llvm_instruction_call_conv"
external set_instruction_call_conv : int -> Llvm.llvalue -> unit
= "llvm_set_instruction_call_conv"
val add_instruction_param_attr :
Llvm.llvalue -> int -> Llvm.Attribute.t -> unit
val remove_instruction_param_attr :
Llvm.llvalue -> int -> Llvm.Attribute.t -> unit
external is_tail_call : Llvm.llvalue -> bool = "llvm_is_tail_call"
external set_tail_call : bool -> Llvm.llvalue -> unit
= "llvm_set_tail_call"
external add_incoming :
Llvm.llvalue * Llvm.llbasicblock -> Llvm.llvalue -> unit
= "llvm_add_incoming"
external incoming : Llvm.llvalue -> (Llvm.llvalue * Llvm.llbasicblock) list
= "llvm_incoming"
external builder : Llvm.llcontext -> Llvm.llbuilder = "llvm_builder"
val builder_at :
Llvm.llcontext ->
(Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos -> Llvm.llbuilder
val builder_before : Llvm.llcontext -> Llvm.llvalue -> Llvm.llbuilder
val builder_at_end : Llvm.llcontext -> Llvm.llbasicblock -> Llvm.llbuilder
external position_builder :
(Llvm.llbasicblock, Llvm.llvalue) Llvm.llpos -> Llvm.llbuilder -> unit
= "llvm_position_builder"
val position_before : Llvm.llvalue -> Llvm.llbuilder -> unit
val position_at_end : Llvm.llbasicblock -> Llvm.llbuilder -> unit
external insertion_block : Llvm.llbuilder -> Llvm.llbasicblock
= "llvm_insertion_block"
external insert_into_builder :
Llvm.llvalue -> string -> Llvm.llbuilder -> unit
= "llvm_insert_into_builder"
external set_current_debug_location :
Llvm.llbuilder -> Llvm.llvalue -> unit
= "llvm_set_current_debug_location"
external clear_current_debug_location : Llvm.llbuilder -> unit
= "llvm_clear_current_debug_location"
external current_debug_location : Llvm.llbuilder -> Llvm.llvalue option
= "llvm_current_debug_location"
external set_inst_debug_location : Llvm.llbuilder -> Llvm.llvalue -> unit
= "llvm_set_inst_debug_location"
external build_ret_void : Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_ret_void"
external build_ret : Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_ret"
external build_aggregate_ret :
Llvm.llvalue array -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_aggregate_ret"
external build_br : Llvm.llbasicblock -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_br"
external build_cond_br :
Llvm.llvalue ->
Llvm.llbasicblock -> Llvm.llbasicblock -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_cond_br"
external build_switch :
Llvm.llvalue ->
Llvm.llbasicblock -> int -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_switch"
external add_case :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llbasicblock -> unit
= "llvm_add_case"
external build_indirect_br :
Llvm.llvalue -> int -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_indirect_br"
external add_destination : Llvm.llvalue -> Llvm.llbasicblock -> unit
= "llvm_add_destination"
external build_invoke :
Llvm.llvalue ->
Llvm.llvalue array ->
Llvm.llbasicblock ->
Llvm.llbasicblock -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_invoke_bc" "llvm_build_invoke_nat"
external build_unwind : Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_unwind"
external build_unreachable : Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_unreachable"
external build_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_add"
external build_nsw_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nsw_add"
external build_nuw_add :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nuw_add"
external build_fadd :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fadd"
external build_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_sub"
external build_nsw_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nsw_sub"
external build_nuw_sub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nuw_sub"
external build_fsub :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fsub"
external build_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_mul"
external build_nsw_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nsw_mul"
external build_nuw_mul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nuw_mul"
external build_fmul :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fmul"
external build_udiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_udiv"
external build_sdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_sdiv"
external build_exact_sdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_exact_sdiv"
external build_fdiv :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fdiv"
external build_urem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_urem"
external build_srem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_srem"
external build_frem :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_frem"
external build_shl :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_shl"
external build_lshr :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_lshr"
external build_ashr :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_ashr"
external build_and :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_and"
external build_or :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_or"
external build_xor :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_xor"
external build_neg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_neg"
external build_nsw_neg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nsw_neg"
external build_nuw_neg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_nuw_neg"
external build_fneg :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fneg"
external build_not :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_not"
external build_alloca :
Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_alloca"
external build_array_alloca :
Llvm.lltype -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_array_alloca"
external build_load :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_load"
external build_store :
Llvm.llvalue -> Llvm.llvalue -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_store"
external build_gep :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_gep"
external build_in_bounds_gep :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_in_bounds_gep"
external build_struct_gep :
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_struct_gep"
external build_global_string :
string -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_global_string"
external build_global_stringptr :
string -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_global_stringptr"
external build_trunc :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_trunc"
external build_zext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_zext"
external build_sext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_sext"
external build_fptoui :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fptoui"
external build_fptosi :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fptosi"
external build_uitofp :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_uitofp"
external build_sitofp :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_sitofp"
external build_fptrunc :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fptrunc"
external build_fpext :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fpext"
external build_ptrtoint :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_prttoint"
external build_inttoptr :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_inttoptr"
external build_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_bitcast"
external build_zext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_zext_or_bitcast"
external build_sext_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_sext_or_bitcast"
external build_trunc_or_bitcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_trunc_or_bitcast"
external build_pointercast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_pointercast"
external build_intcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_intcast"
external build_fpcast :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fpcast"
external build_icmp :
Llvm.Icmp.t ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_icmp"
external build_fcmp :
Llvm.Fcmp.t ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_fcmp"
external build_phi :
(Llvm.llvalue * Llvm.llbasicblock) list ->
string -> Llvm.llbuilder -> Llvm.llvalue = "llvm_build_phi"
external build_call :
Llvm.llvalue ->
Llvm.llvalue array -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_call"
external build_select :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_select"
external build_va_arg :
Llvm.llvalue -> Llvm.lltype -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_va_arg"
external build_extractelement :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_extractelement"
external build_insertelement :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_insertelement"
external build_shufflevector :
Llvm.llvalue ->
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_shufflevector"
external build_extractvalue :
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_extractvalue"
external build_insertvalue :
Llvm.llvalue ->
Llvm.llvalue -> int -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_insertvalue"
external build_is_null :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_is_null"
external build_is_not_null :
Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_is_not_null"
external build_ptrdiff :
Llvm.llvalue -> Llvm.llvalue -> string -> Llvm.llbuilder -> Llvm.llvalue
= "llvm_build_ptrdiff"
module MemoryBuffer :
sig
external of_file : string -> Llvm.llmemorybuffer
= "llvm_memorybuffer_of_file"
external of_stdin : unit -> Llvm.llmemorybuffer
= "llvm_memorybuffer_of_stdin"
external dispose : Llvm.llmemorybuffer -> unit
= "llvm_memorybuffer_dispose"
end
module PassManager :
sig
type 'a t
type any = [ `Function | `Module ]
external create : unit -> [ `Module ] Llvm.PassManager.t
= "llvm_passmanager_create"
external create_function :
Llvm.llmodule -> [ `Function ] Llvm.PassManager.t
= "LLVMCreateFunctionPassManager"
external run_module :
Llvm.llmodule -> [ `Module ] Llvm.PassManager.t -> bool
= "llvm_passmanager_run_module"
external initialize : [ `Function ] Llvm.PassManager.t -> bool
= "llvm_passmanager_initialize"
external run_function :
Llvm.llvalue -> [ `Function ] Llvm.PassManager.t -> bool
= "llvm_passmanager_run_function"
external finalize : [ `Function ] Llvm.PassManager.t -> bool
= "llvm_passmanager_finalize"
external dispose : [< Llvm.PassManager.any ] Llvm.PassManager.t -> unit
= "llvm_passmanager_dispose"
end
end