llvm.mli revision 57cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71
18ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- tools/ml/llvm.ml - LLVM Ocaml Interface ---------------------------===*
28ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *
38ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *                     The LLVM Compiler Infrastructure
48ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *
58ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * This file was developed by Gordon Henriksen and is distributed under the
68ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * University of Illinois Open Source License. See LICENSE.TXT for details.
78ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *
88ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *===----------------------------------------------------------------------===
98ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *
108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * This interface provides an ocaml API for the LLVM intermediate
118ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * representation, the classes in the VMCore library.
128ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *
138ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *===----------------------------------------------------------------------===*)
148ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
158ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(* These abstract types correlate directly to the LLVM VMCore classes. *)
170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The top-level container for all other LLVM Intermediate Representation (IR)
190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    objects. See the [llvm::Module] class. **)
208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llmodule
210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Each value in the LLVM IR has a type, an instance of [lltype]. See the
230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Type] class. **)
240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype lltype 
250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** When building recursive types using [refine_type], [lltype] values may
270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    become invalid; use [lltypehandle] to resolve this problem. See the
280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::AbstractTypeHolder] class. **)
291cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksentype lltypehandle
300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Any value in the LLVM IR. Functions, instructions, global variables,
320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants, and much more are all [llvalues]. See the [llvm::Value] class.
330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    This type covers a wide range of subclasses. **)
348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llvalue
350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** A basic block in LLVM IR. See the [llvm::BasicBlock] class. **)
370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype llbasicblock
380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Used to generate instructions in the LLVM IR. See the [llvm::LLVMBuilder]
400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    class. **)
4146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype llbuilder
428ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
431ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** Used to provide a module to JIT or interpreter. **)
441ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksentype llmoduleprovider
451ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 
470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Type::TypeID] enumeration. **)
488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype type_kind =
498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen  Void_type
508ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Float_type
518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Double_type
528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| X86fp80_type
538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Fp128_type
548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Ppc_fp128_type
558ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Label_type
568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Integer_type
578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Function_type
588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Struct_type
598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Array_type
600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen| Pointer_type
618ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Opaque_type
628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Vector_type
638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linkage of a global value, accessed with [linkage gv] and
650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [set_linkage l gv]. See [llvm::GlobalValue::LinkageTypes]. **)
668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype linkage =
678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen  External_linkage
688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Link_once_linkage
698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Weak_linkage
708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Appending_linkage
718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Internal_linkage
728ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Dllimport_linkage
738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Dllexport_linkage
748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| External_weak_linkage
758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Ghost_linkage
768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linker visibility of a global value, accessed with [visibility gv] and
780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [set_visibility v gv]. See [llvm::GlobalValue::VisibilityTypes]. **)
798ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype visibility =
808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen  Default_visibility
818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Hidden_visibility
828ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Protected_visibility
838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(* The following calling convention values may be accessed with
850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen   [function_call_conv f] and [set_function_call_conv conv f]. Calling
860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen   conventions are open-ended. *)
870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval ccc : int             (** [ccc] is the C calling convention. **)
880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval fastcc : int          (** [fastcc] is the calling convention to allow LLVM
890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              maximum optimization opportunities. Use only with
900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              internal linkage. **)
910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval coldcc : int          (** [coldcc] is the calling convention for
920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              callee-save. **)
930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_stdcallcc : int   (** [x86_stdcallcc] is the familiar stdcall calling
940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              convention from C. **)
950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_fastcallcc : int  (** [x86_fastcallcc] is the familiar fastcall calling
960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              convention from C. **)
9746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction.
990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::ICmpInst::Predicate] enumeration. **)
10046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype int_predicate =
10146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen  Icmp_eq
10246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ne
10346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ugt
10446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_uge
10546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ult
10646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ule
10746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sgt
10846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sge
10946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_slt
11046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sle
11146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction.
1130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::FCmpInst::Predicate] enumeration. **)
11446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype real_predicate =
11546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen  Fcmp_false
11646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_oeq
11746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ogt
11846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_oge
11946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_olt
12046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ole
12146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_one
12246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ord
12346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_uno
12446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ueq
12546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ugt
12646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_uge
12746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ult
12846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ule
12946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_une
13046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_true
13146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Modules -----------------------------------------------------------===*)
1348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [create_module id] creates a module with the supplied module ID. Modules are
1360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    not garbage collected; it is mandatory to call [dispose_module m] to free
1370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    memory. See the constructor [llvm::Module::Module]. *)
1388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal create_module : string -> llmodule = "llvm_create_module"
1398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it
1410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    contained. All references to subordinate objects are invalidated;
1420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    referencing them will invoke undefined behavior. See the destructor
1430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Module::~Module]. **)
1448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module"
1458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table.
1470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Returns [true] if successful. If such a name already exists, then no entry
1480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    is added and [false] is returned. See the [llvm::Module::addTypeName]
1490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    method. **)
15046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool
15146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_add_type_name"
15246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol
1540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    table. *)
15546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit
15646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_delete_type_name"
1578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Types -------------------------------------------------------------===*)
1600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [classify_type ty] returns the [type_kind] corresponding to the type [ty].
1620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Type::getTypeID]. **)
1638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal classify_type : lltype -> type_kind = "llvm_classify_type"
1640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. **)
1668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string
1678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on integer types ........................................--*)
1690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 1-bit integer type. See [llvm::Type::Int1Ty]. **)
1710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i1_type : lltype 
1720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 8-bit integer type. See [llvm::Type::Int8Ty]. **)
1740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i8_type : lltype 
1750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 16-bit integer type. See [llvm::Type::Int16Ty]. **)
1778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i16_type : lltype
1780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 32-bit integer type. See [llvm::Type::Int32Ty]. **)
1808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i32_type : lltype
1810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 64-bit integer type. See [llvm::Type::Int64Ty]. **)
1838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i64_type : lltype
1840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_type n] returns an integer type of bitwidth [n].
1860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::IntegerType::get]. **)
187957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal integer_type : int -> lltype = "llvm_integer_type"
1880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_bitwidth ty] returns the number of bits in the integer type [ty]..
1900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::IntegerType::getBitWidth]. **)
1918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth"
1928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on real types ...........................................--*)
1940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 32-bit floating point type. See [llvm::Type::FloatTy]. **)
1968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval float_type : lltype
1970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 64-bit floating point type. See [llvm::Type::DoubleTy]. **)
1998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval double_type : lltype
2000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The x87 80-bit floating point type. See [llvm::Type::X86_FP80Ty]. **)
2028ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval x86fp80_type : lltype
2030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 128-bit floating point type. See [llvm::Type::FP128Ty]. **)
2058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval fp128_type : lltype
2060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The PowerPC 128-bit floating point type. See [llvm::Type::PPC_FP128Ty]. **)
2088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval ppc_fp128_type : lltype
2098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on function types .......................................--*)
2110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning
2130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret_ty] and taking [param_tys] as parameters.
2140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::get]. **)
215957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type"
2160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like
2180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [function_type ret_ty param_tys] except that it returns the function type
2190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    which also takes a variable number of arguments.
2200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::get]. **)
221957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype
222957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen                               = "llvm_var_arg_function_type"
2230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false]
2250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. See the method [llvm::FunctionType::isVarArg]. **)
2268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg"
2270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty].
2290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::getReturnType]. **)
230d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType"
2310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty].
2330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::getParamType]. **)
2348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types"
2358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on struct types .........................................--*)
2370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the structure type containing in the types in the
2390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    array [tys]. See the method [llvm::StructType::get]. **)
240957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal struct_type : lltype array -> lltype = "llvm_struct_type"
2410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the packed structure type containing in the types
2430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    in the array [tys]. See the method [llvm::StructType::get]. **)
244957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal packed_struct_type : lltype array -> lltype = "llvm_packed_struct_type"
2450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_types sty] returns the constituent types of the struct type [sty].
2470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::StructType::getElementType]. **)
2488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal element_types : lltype -> lltype array = "llvm_element_types"
2490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed,
2510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [false] otherwise. See the method [llvm::StructType::isPacked]. **)
2528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed"
2538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on pointer, vector, and array types .....................--*)
2550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type
2570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ty]. See the method [llvm::ArrayType::get]. **)
258957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type"
2590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type
26157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    [ty] in the default address space (0).
26257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    See the method [llvm::PointerType::getUnqual]. **)
26357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type"
26457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen
26557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects
26657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    of type [ty] in address space [as].
26757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    See the method [llvm::PointerType::get]. **)
26857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype
26957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen                                = "llvm_qualified_pointer_type"
2700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the
2720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    primitive type [ty]. See the method [llvm::ArrayType::get]. **)
273957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type"
2748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array
2760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    type [ty]. See the method [llvm::SequentialType::get]. **)
277d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType"
2780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty].
2800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ArrayType::getNumElements]. **)
2818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length"
2820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
28357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type
28457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    [pty]. See the method [llvm::PointerType::getAddressSpace]. **)
28557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space"
28657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen
2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty].
2880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::VectorType::getNumElements]. **)
2898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size"
2908ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on other types ..........................................--*)
2920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [opaque_type ()] creates a new opaque type distinct from any other.
2940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Opaque types are useful for building recursive types in combination with
2950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [refine_type opaque_ty ty].
2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See [llvm::OpaqueType::get]. **)
297957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal opaque_type : unit -> lltype = "llvm_opaque_type"
2980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [void_type] is the type of a function which does not return any value.
3000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See [llvm::Type::VoidTy]. **)
3018ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval void_type : lltype
3020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [label_type] is the type of a basic block. See [llvm::Type::LabelTy]. **)
3048ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval label_type : lltype
3058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3061cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen(*--... Operations on type handles .........................................--*)
3070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later
3090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    refined as a result of a call to [refine_type], the handle will be updated;
3100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    any bare [lltype] references will become invalid.
3110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the class [llvm::PATypeHolder]. **)
3121cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type"
3130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh].
3150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::PATypeHolder::get()]. **)
3161cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle"
3170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the
3190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    concrete type [ty] in all users. Warning: This may invalidate [lltype]
3200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    values! Use [lltypehandle] to manipulate potentially abstract types. See the
3210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    method [llvm::Type::refineAbstractType]. **)
3221cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type"
3231cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen
3248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3258ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Values ------------------------------------------------------------===*)
3260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v].
3280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Value::getType]. **)
3298ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of"
3300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is
3320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the symbol name. For instructions and basic blocks, it is the SSA register
3330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    name. It is meaningless for constants.
3340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Value::getName]. **)
3358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name"
3360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 
3380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Value::setName]. **)
3398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name"
3400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard
3420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    error. See the method [llvm::Value::dump]. **)
34388cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value"
3448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on constants of (mostly) any type .......................--*)
3460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false]
3480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. Similar to [llvm::isa<Constant>]. **)
349344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant"
3500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty].
3520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Constant::getNullValue]. **)
353e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull"
3540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type
3560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ty]. See the method [llvm::Constant::getAllOnesValue]. **)
357e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes"
3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty].
3600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::UndefValue::get]. **)
361e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef"
3620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value.
3640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Constant::isNullValue]. **)
3658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null"
3660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false]
3680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. Similar to [llvm::isa<UndefValue>]. **)
369344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef"
3708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on scalar constants .....................................--*)
3720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i].
3740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantInt::get]. **)
375e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int"
3760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value
3780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [i]. See the method [llvm::ConstantInt::get]. **)
379e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue
380e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen                        = "llvm_const_of_int64"
3810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and
3830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    value [n]. See the method [llvm::ConstantInt::get]. **)
384e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float"
3858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3868ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on composite constants ..................................--*)
3870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_string s] returns the constant [i8] array with the values of the
3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    characters in the string [s]. The array is not null-terminated (but see
3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [const_stringz]). This value can in turn be used as the initializer for a
3910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    global variable. See the method [llvm::ConstantArray::get]. **)
392e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_string : string -> llvalue = "llvm_const_string"
3930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_stringz s] returns the constant [i8] array with the values of the
3950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    characters in the string [s] and a null terminator. This value can in turn
3960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    be used as the initializer for a global variable.
3970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantArray::get]. **)
398e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_stringz : string -> llvalue = "llvm_const_stringz"
3990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type
4010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [array_type ty (Array.length elts)] and containing the values [elts].
4020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    This value can in turn be used as the initializer for a global variable.
4030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantArray::get]. **)
404e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array"
4050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_struct elts] returns the structured constant of type
4070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [struct_type (Array.map type_of elts)] and containing the values [elts].
4080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    This value can in turn be used as the initializer for a global variable.
4090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantStruct::get]. **)
410e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_struct : llvalue array -> llvalue = "llvm_const_struct"
4110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_packed_struct elts] returns the structured constant of type
4130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [packed_struct_type (Array.map type_of elts)] and containing the values
4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [elts]. This value can in turn be used as the initializer for a global
4150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    variable. See the method [llvm::ConstantStruct::get]. **)
416e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_packed_struct : llvalue array -> llvalue
417e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen                             = "llvm_const_packed_struct"
4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type
4200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [vector_type (type_of elts.(0)) (Array.length elts)] and containing the
4210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    values [elts]. See the method [llvm::ConstantVector::get]. **)
422e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector"
4238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
4244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen(*--... Constant expressions ...............................................--*)
4250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is
4270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty))
4280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    (const_int i64_type 1)) i64_type], but considerably more readable.
4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSizeOf]. **)
430e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf"
4310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c].
4330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getNeg]. **)
4344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg"
4350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c].
4370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getNot]. **)
4384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot"
4390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants.
4410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAdd]. **)
4424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd"
4430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two
4450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants. See the method [llvm::ConstantExpr::getSub]. **)
4464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub"
4470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants.
4490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getMul]. **)
4504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul"
4510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned
4530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constants.
4540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getUDiv]. **)
4554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv"
4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed
4580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constants.
4590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::]. **)
4604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv"
4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating
4630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    point constants.
4640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFDiv]. **)
4654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv"
4660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant remainder [c1 MOD c2] of two
4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    unsigned integer constants.
4690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getURem]. **)
4704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem"
4710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant remainder [c1 MOD c2] of two
4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed integer constants.
4740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSRem]. **)
4754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem"
4760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two
4780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed floating point constants.
4790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFRem]. **)
4804647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem"
4810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer
4830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
4840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAnd]. **)
4854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd"
4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer
4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
4890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getOr]. **)
4904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr"
4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer
4930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
4940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getXor]. **)
4954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor"
4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer
4980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants, [c1 pred c2].
4990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getICmp]. **)
5004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_icmp : int_predicate -> llvalue -> llvalue -> llvalue
5014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                    = "llvm_const_icmp"
5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating
5040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    point constants, [c1 pred c2].
5050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFCmp]. **)
5064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fcmp : real_predicate -> llvalue -> llvalue -> llvalue
5074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                    = "llvm_const_fcmp"
5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the
5100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2].
5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getShl]. **)
5124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl"
5130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the
5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2] with zero extension.
5160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getLShr]. **)
5174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr"
5180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the
5200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2] with sign extension.
5210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAShr]. **)
5224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr"
5230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the
5250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integers indices from the array [indices].
5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getGetElementPtr]. **)
5274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep"
5280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c]
5300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to the smaller integer type [ty].
5310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getTrunc]. **)
5324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc"
5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant
5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger integer type [ty].
5360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSExt]. **)
5374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt"
5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant
5400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger integer type [ty].
5410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getZExt]. **)
5424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt"
5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point
5450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant [c] to the smaller floating point type [ty].
5460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPTrunc]. **)
5474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc"
5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant
5500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger floating point type [ty].
5510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPExt]. **)
5524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt"
5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of
5550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    unsigned integer constant [c] to the floating point type [ty].
5560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getUIToFP]. **)
5574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP"
5580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of
5600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed integer constant [c] to the floating point type [ty].
5610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSIToFP]. **)
5624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP"
5630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of
5650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    floating point constant [c] to integer type [ty].
5660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPToUI]. **)
5674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI"
5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of
5700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    floating point constant [c] to integer type [ty].
5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPToSI]. **)
5724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI"
5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of
5750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    pointer constant [c] to integer type [ty].
5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getPtrToInt]. **)
5774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt"
5780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of
5800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constant [c] to pointer type [ty].
5810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getIntToPtr]. **)
5824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr"
5830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c]
5850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to type [ty] of equal size.
5860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getBitCast]. **)
5874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast"
5880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value
5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [t] if the boolean constant [cond] is true and the value [f] otherwise.
5910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSelect]. **)
5924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue
5934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                      = "LLVMConstSelect"
5940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of
5960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant vector [vec]. [i] must be a constant [i32] value unsigned less than
5970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the size of the vector.
5980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getExtractElement]. **)
5994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue
6004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                              = "LLVMConstExtractElement"
6010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same
6030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    elements as constant vector [v] but the [i]th element replaced by the
6040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant [v]. [v] must be a constant value with the type of the vector
6050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    elements. [i] must be a constant [i32] value unsigned less than the size
6060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    of the vector.
6070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getInsertElement]. **)
6084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue
6094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                             = "LLVMConstInsertElement"
6100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector].
6120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the LLVM Language Reference for details on the [sufflevector]
6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction.
6140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getShuffleVector]. **)
6154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue
6164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                             = "LLVMConstShuffleVector"
6174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen
6188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables, functions, and aliases (globals) ...--*)
6190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration
6210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    only. Returns [false] otherwise.
6220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::isDeclaration]. **)
6238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration"
6240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g].
6260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getLinkage]. **)
6278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal linkage : llvalue -> linkage = "llvm_linkage"
6280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l].
6300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::setLinkage]. **)
6318ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_linkage : linkage -> llvalue -> unit = "llvm_set_linkage"
6320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g].
6340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getSection]. **)
6358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section"
6360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s].
6380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::setSection]. **)
6398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section"
6400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g].
6420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getVisibility]. **)
6438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal visibility : llvalue -> visibility = "llvm_visibility"
6440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to
6460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [v]. See the method [llvm::GlobalValue::setVisibility]. **)
6478ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility"
6480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g].
6500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getAlignment]. **)
6518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment"
6520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to
6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [n] bytes. See the method [llvm::GlobalValue::setAlignment]. **)
6558ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment"
6568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
6578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables .....................................--*)
6580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and
6600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with name [name] in module [m]. If such a global variable already exists,
6610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    it is returned. If the type of the existing global differs, then a bitcast
6620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to [ty] is returned. **)
6638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue
6648ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen                        = "llvm_declare_global"
6650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and
6670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    initializer [init] in module [m]. If the named global already exists, it is
6680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    renamed.
6690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::GlobalVariable]. **)
6708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue
6718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen                       = "llvm_define_global"
6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name
6740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [name] exists in module [m]. If no such global exists, returns [None].
6750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::GlobalVariable] constructor. **)
6766d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option
6776d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen                       = "llvm_lookup_global"
6780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv].
6800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::eraseFromParent]. **)
6818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global"
6820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a
6840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant. Returns [false] otherwise.
6850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::isConstant]. **)
6860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant"
6870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if
6890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] is [true] and not if [c] is [false].
6900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setConstant]. **)
6910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit
6920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                             = "llvm_set_global_constant"
6930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [has_initializer gv] returns [true] if the global variable [gv] has an
6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    initializer and [false] otherwise.
6960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::hasInitializer]. **)
6970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal has_initializer : llvalue -> bool = "llvm_has_initializer"
6980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable
7000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv]. See the method [llvm::GlobalVariable::getInitializer]. **)
70146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer"
7020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable
7040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv] to the constant [c].
7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setInitializer]. **)
7068ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer"
7070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable
7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv].
7100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setInitializer]. **)
7118ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer"
7120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is
7140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    thread-local and [false] otherwise.
7150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::isThreadLocal]. **)
7168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local"
7170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if
7190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] is [true] and not otherwise.
7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setThreadLocal]. **)
7218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local"
7228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
72346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on functions ............................................--*)
7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and
7260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with name [name] in module [m]. If such a function already exists,
7270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    it is returned. If the type of the existing function differs, then a bitcast
7280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to [ty] is returned. **)
72946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue
73046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_declare_function"
7310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and
7330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    type [ty] in module [m]. If the named function already exists, it is
7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    renamed. An entry basic block is created in the function.
7350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::GlobalVariable]. **)
73646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue
73746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         = "llvm_define_function"
7380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name
7400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [name] exists in module [m]. If no such function exists, returns [None].
7410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Module] constructor. **)
7426d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option
7436d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen                         = "llvm_lookup_function"
7440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f].
7460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::eraseFromParent]. **)
74746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function"
7480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [params f] returns the parameters of function [f].
7500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getArgumentList]. **)
75146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params"
7520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param f n] returns the [n]th parameter of function [f].
7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getArgumentList]. **)
75546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param"
7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic.
7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::isIntrinsic]. **)
75946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic"
7600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f].
7620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getCallingConv]. **)
76346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv"
7640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function
7660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [f] to the calling convention numbered [cc].
7670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::setCallingConv]. **)
76846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit
76946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                                = "llvm_set_function_call_conv"
77046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
77180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [collector f] returns [Some name] if the function [f] has a garbage
77280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    collection algorithm specified and [None] otherwise.
77380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    See the method [llvm::Function::getCollector]. **)
77480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal collector : llvalue -> string option = "llvm_collector"
77580a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen
77680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [set_collector gc f] sets the collection algorithm for the function [f] to
77780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    [gc]. See the method [llvm::Function::setCollector]. **)
77880a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal set_collector : string option -> llvalue -> unit = "llvm_set_collector"
77980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen
78046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on basic blocks .........................................--*)
7810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f].
7830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getBasicBlockList]. **)
78446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks"
7850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f].
7870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getEntryBlock]. **)
78846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock"
7890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb].
7910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::BasicBlock::eraseFromParent]. **)
79246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block"
7930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [append_block name f] creates a new basic block named [name] at the end of
7950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    function [f].
7960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::BasicBlock]. **)
79746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal append_block : string -> llvalue -> llbasicblock = "llvm_append_block"
7980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [insert_block name bb] creates a new basic block named [name] before the
8000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    basic block [bb].
8010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::BasicBlock]. **)
80246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal insert_block : string -> llbasicblock -> llbasicblock
80346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_insert_block"
8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. **)
80646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue"
8070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and
8090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [false] otherwise.
8100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Similar to [llvm::isa<BasicBlock>]. **)
81146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block"
8120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. **)
81446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock"
81546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
8162618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen(*--... Operations on phi nodes ............................................--*)
8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use
8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with branches from [bb]. See the method [llvm::PHINode::addIncoming]. **)
8202618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit
8212618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen                      = "llvm_add_incoming"
8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn].
8240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::PHINode::getIncomingValue]. **)
8252618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming"
8262618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen
82746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
82846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*===-- Instruction builders ----------------------------------------------===*)
8290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the
8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction [isn]. See the constructor for [llvm::LLVMBuilder]. **)
83246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_before : llvalue -> llbuilder = "llvm_builder_before"
8330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of
8350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. **)
83646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_at_end : llbasicblock -> llbuilder = "llvm_builder_at_end"
8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the
8390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **)
84046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_before : llvalue -> llbuilder -> unit = "llvm_position_before"
8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the
8430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **)
84446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_at_end : llbasicblock -> llbuilder -> unit
84546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         = "llvm_position_at_end"
84646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
84746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Terminators ........................................................--*)
8480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a
8500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret void]
8510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateRetVoid]. **)
85346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void"
8540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a
8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret %v]
8570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateRet]. **)
85946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret"
8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a
8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [b %bb]
8630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateBr]. **)
86546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br"
8660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a
8680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [b %cond, %tbb, %fbb]
8690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateCondBr]. **)
87146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder ->
87246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         llvalue = "llvm_build_cond_br"
8730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_switch case elsebb b] creates an empty
8750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [switch %case, %elsebb]
8760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSwitch]. **)
87846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue
87946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_switch"
8800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an
8820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = invoke %fn(args) to %tobb unwind %unwindbb]
8830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateInvoke]. **)
88546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock ->
88646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        llbasicblock -> string -> llbuilder -> llvalue
88746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_invoke_bc" "llvm_build_invoke_nat"
8880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an
8900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [unwind]
8910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUnwind]. **)
89346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind"
8940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an
8960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [unreachable]
8970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUnwind]. **)
89946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable"
90046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
90146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Arithmetic .........................................................--*)
9020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a
9040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = add %x, %y]
9050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAdd]. **)
90746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
90846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_add"
9090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a
9110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sub %x, %y]
9120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSub]. **)
91446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue
91546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_sub"
9160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a
9180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = mul %x, %y]
9190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateMul]. **)
92146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue
92246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_mul"
9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a
9250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = udiv %x, %y]
9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUDiv]. **)
92846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
92946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_udiv"
9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a
9320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sdiv %x, %y]
9330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSDiv]. **)
93546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
93646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_sdiv"
9370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a
9390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fdiv %x, %y]
9400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFDiv]. **)
94246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
94346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_fdiv"
9440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a
9460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = urem %x, %y]
9470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateURem]. **)
94946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue
95046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_urem"
9510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a
9530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = srem %x, %y]
9540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSRem]. **)
95646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue
95746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_srem"
9580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a
9600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = frem %x, %y]
9610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFRem]. **)
96346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue
96446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_frem"
9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a
9670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = shl %x, %y]
9680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateShl]. **)
97046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue
97146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_shl"
9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a
9740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = lshr %x, %y]
9750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateLShr]. **)
97746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue
97846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_lshr"
9790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a
9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = ashr %x, %y]
9820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAShr]. **)
98446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue
98546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_ashr"
9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a
9880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = and %x, %y]
9890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAnd]. **)
99146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue
99246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_and"
9930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a
9950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = or %x, %y]
9960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateOr]. **)
99846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue
99946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                  = "llvm_build_or"
10000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a
10020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = xor %x, %y]
10030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateXor]. **)
100546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue
100646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_xor"
10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a
10090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sub 0, %x]
10100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [-0.0] is used for floating point types to compute the correct sign.
10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateNeg]. **)
101346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue
101446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_neg"
10150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a
10170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = xor %x, -1]
10180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [-1] is the correct "all ones" value for the type of [x].
10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateXor]. **)
102146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue
102246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_not"
102346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
102446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Memory .............................................................--*)
10250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_malloc ty name b] creates a
10270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = malloc %ty]
10280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
103046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_malloc : lltype -> string -> llbuilder -> llvalue
103146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_malloc"
10320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_malloc ty n name b] creates a
10340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = malloc %ty, %n]
10350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateMalloc]. **)
103746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder ->
103846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                              llvalue = "llvm_build_array_malloc"
10390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a
10410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = alloca %ty]
10420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
104446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue
104546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_alloca"
10460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a
10480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = alloca %ty, %n]
10490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
105146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder ->
105246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                              llvalue = "llvm_build_array_alloca"
10530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_free v b] creates a
10550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [free %v]
10560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFree]. **)
105846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free"
10590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a
10610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = load %v]
10620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateLoad]. **)
106446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue
106546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_load"
10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a
10680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [store %v, %p]
10690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateStore]. **)
107146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue
107246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_store"
10730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store p indices name b] creates a
10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = gep %p, indices...]
10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateGetElementPtr]. **)
107846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue
107946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_gep"
108046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
108146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Casts ..............................................................--*)
10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a
10840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = trunc %p to %ty]
10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateTrunc]. **)
108746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue
108846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_trunc"
10890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a
10910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = zext %p to %ty]
10920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateZExt]. **)
109446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue
109546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_zext"
10960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a
10980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sext %p to %ty]
10990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSExt]. **)
110146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue
110246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_sext"
11030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a
11050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptoui %p to %ty]
11060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPToUI]. **)
110846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue
110946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_fptoui"
11100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a
11120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptosi %p to %ty]
11130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPToSI]. **)
111546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue
111646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_fptosi"
11170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a
11190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = uitofp %p to %ty]
11200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUIToFP]. **)
112246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue
112346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_uitofp"
11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a
11260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sitofp %p to %ty]
11270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSIToFP]. **)
112946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue
113046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_sitofp"
11310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a
11330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptrunc %p to %ty]
11340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPTrunc]. **)
113646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue
113746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                       = "llvm_build_fptrunc"
11380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a
11400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fpext %p to %ty]
11410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPExt]. **)
114346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue
114446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_fpext"
11450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a
11470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = prtotint %p to %ty]
11480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreatePtrToInt]. **)
115046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue
115146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        = "llvm_build_prttoint"
11520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a
11540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = inttoptr %p to %ty]
11550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateIntToPtr]. **)
115746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue
115846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        = "llvm_build_inttoptr"
11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a
11610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = bitcast %p to %ty]
11620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateBitcast]. **)
116446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue
116546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                       = "llvm_build_bitcast"
116646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
116746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Comparisons ........................................................--*)
11680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a
11700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = icmp %pred %x, %y]
11710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateICmp]. **)
117346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_icmp : int_predicate -> llvalue -> llvalue -> string ->
117446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      llbuilder -> llvalue = "llvm_build_icmp"
11750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a
11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fcmp %pred %x, %y]
11780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFCmp]. **)
118046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fcmp : real_predicate -> llvalue -> llvalue -> string ->
118146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      llbuilder -> llvalue = "llvm_build_fcmp"
118246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
118346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Miscellaneous instructions .........................................--*)
11840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a
11860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = phi %incoming]
11870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [incoming] is a list of [(llvalue, llbasicblock)] tuples.
11890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreatePHI]. **)
11902618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder ->
11912618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen                     llvalue = "llvm_build_phi"
11920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a
11940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = call %fn(args...)]
11950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateCall]. **)
119746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue
119846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_call"
11990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a
12010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = select %cond, %thenv, %elsev]
12020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSelect]. **)
120446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder ->
120546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        llvalue = "llvm_build_select"
12060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a
12080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = va_arg %valist, %argty]
12090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateVAArg]. **)
121146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue
121246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_va_arg"
12130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a
12150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = extractelement %vec, %i]
12160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateExtractElement]. **)
121846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder ->
121946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                                llvalue = "llvm_build_extractelement"
12200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a
12220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = insertelement %vec, %elt, %i]
12230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateInsertElement]. **)
122546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string ->
122646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                               llbuilder -> llvalue = "llvm_build_insertelement"
12270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a
12290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = shufflevector %veca, %vecb, %mask]
12300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateShuffleVector]. **)
123246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string ->
123346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                               llbuilder -> llvalue = "llvm_build_shufflevector"
12341ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12351ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12361ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(*===-- Module providers --------------------------------------------------===*)
12371ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12381ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** [create_module_provider m] encapsulates [m] in a module provider and takes
12391ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen    ownership of the module. See the constructor 
12401ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen    [llvm::ExistingModuleProvider::ExistingModuleProvider]. **)
12411ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenexternal create_module_provider : llmodule -> llmoduleprovider
12421ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen                                = "LLVMCreateModuleProviderForExistingModule"
12431ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12441ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** [dispose_module_provider mp] destroys the module provider [mp] as well as
12451ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen    the contained module. **)
12461ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenexternal dispose_module_provider : llmoduleprovider -> unit
12471ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen                                 = "llvm_dispose_module_provider"
1248