llvm.mli revision 404a1942e43ca967700cc2608eb97b863add2677
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
43da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to provide a module to JIT or interpreter.
44da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen    See the [llvm::ModuleProvider] class. **)
451ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksentype llmoduleprovider
461ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
47da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to efficiently handle large buffers of read-only binary data.
48da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen    See the [llvm::MemoryBuffer] class. **)
49da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksentype llmemorybuffer
50da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen
510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 
520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Type::TypeID] enumeration. **)
53404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind : sig
54404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  type t =
55404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen    Void
56404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Float
57404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Double
58404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | X86fp80
59404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Fp128
60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ppc_fp128
61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Label
62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Integer
63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Function
64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Struct
65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Array
66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Pointer
67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Opaque
68404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Vector
69404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend
708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linkage of a global value, accessed with [linkage gv] and
720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [set_linkage l gv]. See [llvm::GlobalValue::LinkageTypes]. **)
73404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig
74404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  type t =
75404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen    External
76404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Link_once
77404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Weak
78404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Appending
79404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Internal
80404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Dllimport
81404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Dllexport
82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | External_weak
83404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ghost
84404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend
858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linker visibility of a global value, accessed with [visibility gv] and
870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [set_visibility v gv]. See [llvm::GlobalValue::VisibilityTypes]. **)
88404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig
89404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  type t =
90404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen    Default
91404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Hidden
92404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Protected
93404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend
948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(* The following calling convention values may be accessed with
960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen   [function_call_conv f] and [set_function_call_conv conv f]. Calling
970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen   conventions are open-ended. *)
980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval ccc : int             (** [ccc] is the C calling convention. **)
990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval fastcc : int          (** [fastcc] is the calling convention to allow LLVM
1000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              maximum optimization opportunities. Use only with
1010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              internal linkage. **)
1020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval coldcc : int          (** [coldcc] is the calling convention for
1030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              callee-save. **)
1040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_stdcallcc : int   (** [x86_stdcallcc] is the familiar stdcall calling
1050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              convention from C. **)
1060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_fastcallcc : int  (** [x86_fastcallcc] is the familiar fastcall calling
1070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                              convention from C. **)
10846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction.
1100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::ICmpInst::Predicate] enumeration. **)
111404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig
112404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  type t =
113404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Eq
114404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ne
115404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ugt
116404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Uge
117404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ult
118404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ule
119404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Sgt
120404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Sge
121404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Slt
122404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Sle
123404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend
12446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction.
1260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::FCmpInst::Predicate] enumeration. **)
127404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig
128404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  type t =
129404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | False
130404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Oeq
131404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ogt
132404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Oge
133404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Olt
134404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ole
135404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | One
136404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ord
137404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Uno
138404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ueq
139404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ugt
140404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Uge
141404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ult
142404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Ule
143404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | Une
144404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen  | True
145404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend
14646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
147da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string
148da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen
1498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1508ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Modules -----------------------------------------------------------===*)
1518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [create_module id] creates a module with the supplied module ID. Modules are
1530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    not garbage collected; it is mandatory to call [dispose_module m] to free
1540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    memory. See the constructor [llvm::Module::Module]. *)
1558ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal create_module : string -> llmodule = "llvm_create_module"
1568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it
1580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    contained. All references to subordinate objects are invalidated;
1590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    referencing them will invoke undefined behavior. See the destructor
1600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Module::~Module]. **)
1618ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module"
1628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table.
1640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Returns [true] if successful. If such a name already exists, then no entry
1650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    is added and [false] is returned. See the [llvm::Module::addTypeName]
1660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    method. **)
16746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool
16846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_add_type_name"
16946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
1700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol
1710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    table. *)
17246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit
17346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_delete_type_name"
1748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Types -------------------------------------------------------------===*)
1770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [classify_type ty] returns the [type_kind] corresponding to the type [ty].
1790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Type::getTypeID]. **)
180404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type"
1810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. **)
1838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string
1848ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
1858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on integer types ........................................--*)
1860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 1-bit integer type. See [llvm::Type::Int1Ty]. **)
1880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i1_type : lltype 
1890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 8-bit integer type. See [llvm::Type::Int8Ty]. **)
1910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i8_type : lltype 
1920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 16-bit integer type. See [llvm::Type::Int16Ty]. **)
1948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i16_type : lltype
1950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 32-bit integer type. See [llvm::Type::Int32Ty]. **)
1978ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i32_type : lltype
1980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
1990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 64-bit integer type. See [llvm::Type::Int64Ty]. **)
2008ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i64_type : lltype
2010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_type n] returns an integer type of bitwidth [n].
2030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::IntegerType::get]. **)
204957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal integer_type : int -> lltype = "llvm_integer_type"
2050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_bitwidth ty] returns the number of bits in the integer type [ty]..
2070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::IntegerType::getBitWidth]. **)
2088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth"
2098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on real types ...........................................--*)
2110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 32-bit floating point type. See [llvm::Type::FloatTy]. **)
2138ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval float_type : lltype
2140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 64-bit floating point type. See [llvm::Type::DoubleTy]. **)
2168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval double_type : lltype
2170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The x87 80-bit floating point type. See [llvm::Type::X86_FP80Ty]. **)
2198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval x86fp80_type : lltype
2200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 128-bit floating point type. See [llvm::Type::FP128Ty]. **)
2228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval fp128_type : lltype
2230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The PowerPC 128-bit floating point type. See [llvm::Type::PPC_FP128Ty]. **)
2258ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval ppc_fp128_type : lltype
2268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on function types .......................................--*)
2280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning
2300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret_ty] and taking [param_tys] as parameters.
2310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::get]. **)
232957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type"
2330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like
2350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [function_type ret_ty param_tys] except that it returns the function type
2360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    which also takes a variable number of arguments.
2370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::get]. **)
238957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype
239957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen                               = "llvm_var_arg_function_type"
2400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false]
2420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. See the method [llvm::FunctionType::isVarArg]. **)
2438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg"
2440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty].
2460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::getReturnType]. **)
247d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType"
2480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty].
2500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::FunctionType::getParamType]. **)
2518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types"
2528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on struct types .........................................--*)
2540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the structure type containing in the types in the
2560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    array [tys]. See the method [llvm::StructType::get]. **)
257957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal struct_type : lltype array -> lltype = "llvm_struct_type"
2580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the packed structure type containing in the types
2600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    in the array [tys]. See the method [llvm::StructType::get]. **)
261957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal packed_struct_type : lltype array -> lltype = "llvm_packed_struct_type"
2620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_types sty] returns the constituent types of the struct type [sty].
2640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::StructType::getElementType]. **)
2658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal element_types : lltype -> lltype array = "llvm_element_types"
2660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed,
2680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [false] otherwise. See the method [llvm::StructType::isPacked]. **)
2698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed"
2708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on pointer, vector, and array types .....................--*)
2720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type
2740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ty]. See the method [llvm::ArrayType::get]. **)
275957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type"
2760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type
27857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    [ty] in the default address space (0).
27957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    See the method [llvm::PointerType::getUnqual]. **)
28057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type"
28157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen
28257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects
28357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    of type [ty] in address space [as].
28457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    See the method [llvm::PointerType::get]. **)
28557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype
28657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen                                = "llvm_qualified_pointer_type"
2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the
2890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    primitive type [ty]. See the method [llvm::ArrayType::get]. **)
290957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type"
2918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
2920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array
2930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    type [ty]. See the method [llvm::SequentialType::get]. **)
294d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType"
2950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty].
2970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ArrayType::getNumElements]. **)
2988ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length"
2990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
30057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type
30157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen    [pty]. See the method [llvm::PointerType::getAddressSpace]. **)
30257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space"
30357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen
3040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty].
3050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::VectorType::getNumElements]. **)
3068ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size"
3078ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on other types ..........................................--*)
3090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [opaque_type ()] creates a new opaque type distinct from any other.
3110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Opaque types are useful for building recursive types in combination with
3120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [refine_type opaque_ty ty].
3130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See [llvm::OpaqueType::get]. **)
314957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal opaque_type : unit -> lltype = "llvm_opaque_type"
3150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [void_type] is the type of a function which does not return any value.
3170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See [llvm::Type::VoidTy]. **)
3188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval void_type : lltype
3190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [label_type] is the type of a basic block. See [llvm::Type::LabelTy]. **)
3218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval label_type : lltype
3228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3231cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen(*--... Operations on type handles .........................................--*)
3240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later
3260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    refined as a result of a call to [refine_type], the handle will be updated;
3270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    any bare [lltype] references will become invalid.
3280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the class [llvm::PATypeHolder]. **)
3291cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type"
3300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh].
3320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::PATypeHolder::get()]. **)
3331cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle"
3340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the
3360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    concrete type [ty] in all users. Warning: This may invalidate [lltype]
3370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    values! Use [lltypehandle] to manipulate potentially abstract types. See the
3380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    method [llvm::Type::refineAbstractType]. **)
3391cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type"
3401cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen
3418ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3428ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Values ------------------------------------------------------------===*)
3430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v].
3450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Value::getType]. **)
3468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of"
3470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is
3490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the symbol name. For instructions and basic blocks, it is the SSA register
3500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    name. It is meaningless for constants.
3510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Value::getName]. **)
3528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name"
3530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 
3550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [llvm::Value::setName]. **)
3568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name"
3570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard
3590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    error. See the method [llvm::Value::dump]. **)
36088cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value"
3618ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on constants of (mostly) any type .......................--*)
3630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false]
3650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. Similar to [llvm::isa<Constant>]. **)
366344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant"
3670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty].
3690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Constant::getNullValue]. **)
370e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull"
3710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type
3730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ty]. See the method [llvm::Constant::getAllOnesValue]. **)
374e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes"
3750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty].
3770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::UndefValue::get]. **)
378e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef"
3790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value.
3810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Constant::isNullValue]. **)
3828ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null"
3830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false]
3850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    otherwise. Similar to [llvm::isa<UndefValue>]. **)
386344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef"
3878ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
3888ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on scalar constants .....................................--*)
3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i].
3910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantInt::get]. **)
392e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int"
3930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value
3950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [i]. See the method [llvm::ConstantInt::get]. **)
396e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue
397e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen                        = "llvm_const_of_int64"
3980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
3990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and
4000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    value [n]. See the method [llvm::ConstantInt::get]. **)
401e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float"
4028ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
4038ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on composite constants ..................................--*)
4040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_string s] returns the constant [i8] array with the values of the
4060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    characters in the string [s]. The array is not null-terminated (but see
4070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [const_stringz]). This value can in turn be used as the initializer for a
4080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    global variable. See the method [llvm::ConstantArray::get]. **)
409e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_string : string -> llvalue = "llvm_const_string"
4100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_stringz s] returns the constant [i8] array with the values of the
4120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    characters in the string [s] and a null terminator. This value can in turn
4130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    be used as the initializer for a global variable.
4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantArray::get]. **)
415e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_stringz : string -> llvalue = "llvm_const_stringz"
4160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type
4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [array_type ty (Array.length elts)] and containing the values [elts].
4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    This value can in turn be used as the initializer for a global variable.
4200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantArray::get]. **)
421e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array"
4220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_struct elts] returns the structured constant of type
4240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [struct_type (Array.map type_of elts)] and containing the values [elts].
4250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    This value can in turn be used as the initializer for a global variable.
4260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantStruct::get]. **)
427e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_struct : llvalue array -> llvalue = "llvm_const_struct"
4280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_packed_struct elts] returns the structured constant of type
4300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [packed_struct_type (Array.map type_of elts)] and containing the values
4310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [elts]. This value can in turn be used as the initializer for a global
4320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    variable. See the method [llvm::ConstantStruct::get]. **)
433e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_packed_struct : llvalue array -> llvalue
434e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen                             = "llvm_const_packed_struct"
4350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type
4370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [vector_type (type_of elts.(0)) (Array.length elts)] and containing the
4380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    values [elts]. See the method [llvm::ConstantVector::get]. **)
439e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector"
4408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
4414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen(*--... Constant expressions ...............................................--*)
4420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is
4440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty))
4450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    (const_int i64_type 1)) i64_type], but considerably more readable.
4460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSizeOf]. **)
447e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf"
4480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c].
4500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getNeg]. **)
4514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg"
4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c].
4540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getNot]. **)
4554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot"
4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants.
4580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAdd]. **)
4594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd"
4600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two
4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants. See the method [llvm::ConstantExpr::getSub]. **)
4634647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub"
4640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants.
4660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getMul]. **)
4674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul"
4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned
4700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constants.
4710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getUDiv]. **)
4724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv"
4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed
4750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constants.
4760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::]. **)
4774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv"
4780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating
4800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    point constants.
4810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFDiv]. **)
4824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv"
4830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant remainder [c1 MOD c2] of two
4850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    unsigned integer constants.
4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getURem]. **)
4874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem"
4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant remainder [c1 MOD c2] of two
4900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed integer constants.
4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSRem]. **)
4924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem"
4930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two
4950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed floating point constants.
4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFRem]. **)
4974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem"
4980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
4990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer
5000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
5010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAnd]. **)
5024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd"
5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer
5050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
5060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getOr]. **)
5074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr"
5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer
5100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants.
5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getXor]. **)
5124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor"
5130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer
5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constants, [c1 pred c2].
5160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getICmp]. **)
517404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue
5184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                    = "llvm_const_icmp"
5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating
5210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    point constants, [c1 pred c2].
5220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFCmp]. **)
523404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue
5244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                    = "llvm_const_fcmp"
5250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the
5270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2].
5280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getShl]. **)
5294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl"
5300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the
5320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2] with zero extension.
5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getLShr]. **)
5344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr"
5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the
5370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integer [c2] with sign extension.
5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getAShr]. **)
5394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr"
5400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the
5420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant integers indices from the array [indices].
5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getGetElementPtr]. **)
5444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep"
5450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c]
5470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to the smaller integer type [ty].
5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getTrunc]. **)
5494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc"
5500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant
5520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger integer type [ty].
5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSExt]. **)
5544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt"
5550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant
5570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger integer type [ty].
5580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getZExt]. **)
5594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt"
5600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point
5620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant [c] to the smaller floating point type [ty].
5630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPTrunc]. **)
5644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc"
5650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant
5670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] to the larger floating point type [ty].
5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPExt]. **)
5694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt"
5700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of
5720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    unsigned integer constant [c] to the floating point type [ty].
5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getUIToFP]. **)
5744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP"
5750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of
5770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    signed integer constant [c] to the floating point type [ty].
5780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSIToFP]. **)
5794647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP"
5800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of
5820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    floating point constant [c] to integer type [ty].
5830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPToUI]. **)
5844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI"
5850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of
5870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    floating point constant [c] to integer type [ty].
5880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getFPToSI]. **)
5894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI"
5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of
5920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    pointer constant [c] to integer type [ty].
5930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getPtrToInt]. **)
5944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt"
5950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
5960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of
5970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    integer constant [c] to pointer type [ty].
5980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getIntToPtr]. **)
5994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr"
6000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c]
6020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to type [ty] of equal size.
6030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getBitCast]. **)
6044647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast"
6050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value
6070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [t] if the boolean constant [cond] is true and the value [f] otherwise.
6080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getSelect]. **)
6094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue
6104647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                      = "LLVMConstSelect"
6110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of
6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant vector [vec]. [i] must be a constant [i32] value unsigned less than
6140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the size of the vector.
6150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getExtractElement]. **)
6164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue
6174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                              = "LLVMConstExtractElement"
6180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same
6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    elements as constant vector [v] but the [i]th element replaced by the
6210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant [v]. [v] must be a constant value with the type of the vector
6220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    elements. [i] must be a constant [i32] value unsigned less than the size
6230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    of the vector.
6240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getInsertElement]. **)
6254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue
6264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                             = "LLVMConstInsertElement"
6270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector].
6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the LLVM Language Reference for details on the [sufflevector]
6300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction.
6310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::ConstantExpr::getShuffleVector]. **)
6324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue
6334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen                             = "LLVMConstShuffleVector"
6344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen
6358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables, functions, and aliases (globals) ...--*)
6360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration
6380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    only. Returns [false] otherwise.
6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::isDeclaration]. **)
6408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration"
6410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g].
6430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getLinkage]. **)
644404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage"
6450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l].
6470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::setLinkage]. **)
648404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage"
6490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g].
6510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getSection]. **)
6528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section"
6530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s].
6550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::setSection]. **)
6568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section"
6570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g].
6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getVisibility]. **)
660404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility"
6610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to
6630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [v]. See the method [llvm::GlobalValue::setVisibility]. **)
664404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit
665404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen                        = "llvm_set_visibility"
6660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g].
6680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalValue::getAlignment]. **)
6698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment"
6700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to
6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [n] bytes. See the method [llvm::GlobalValue::setAlignment]. **)
6738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment"
6748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
6758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables .....................................--*)
6760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and
6780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with name [name] in module [m]. If such a global variable already exists,
6790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    it is returned. If the type of the existing global differs, then a bitcast
6800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to [ty] is returned. **)
6818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue
6828ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen                        = "llvm_declare_global"
6830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and
6850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    initializer [init] in module [m]. If the named global already exists, it is
6860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    renamed.
6870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::GlobalVariable]. **)
6888ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue
6898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen                       = "llvm_define_global"
6900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name
6920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [name] exists in module [m]. If no such global exists, returns [None].
6930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the [llvm::GlobalVariable] constructor. **)
6946d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option
6956d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen                       = "llvm_lookup_global"
6960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
6970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv].
6980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::eraseFromParent]. **)
6998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global"
7000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a
7020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    constant. Returns [false] otherwise.
7030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::isConstant]. **)
7040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant"
7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if
7070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] is [true] and not if [c] is [false].
7080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setConstant]. **)
7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit
7100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen                             = "llvm_set_global_constant"
7110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [has_initializer gv] returns [true] if the global variable [gv] has an
7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    initializer and [false] otherwise.
7140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::hasInitializer]. **)
7150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal has_initializer : llvalue -> bool = "llvm_has_initializer"
7160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable
7180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv]. See the method [llvm::GlobalVariable::getInitializer]. **)
71946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer"
7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable
7220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv] to the constant [c].
7230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setInitializer]. **)
7248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer"
7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable
7270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [gv].
7280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setInitializer]. **)
7298ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer"
7300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is
7320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    thread-local and [false] otherwise.
7330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::isThreadLocal]. **)
7348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local"
7350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if
7370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [c] is [true] and not otherwise.
7380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::GlobalVariable::setThreadLocal]. **)
7398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local"
7408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen
74146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on functions ............................................--*)
7420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and
7440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with name [name] in module [m]. If such a function already exists,
7450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    it is returned. If the type of the existing function differs, then a bitcast
7460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    to [ty] is returned. **)
74746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue
74846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                          = "llvm_declare_function"
7490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and
7510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    type [ty] in module [m]. If the named function already exists, it is
7520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    renamed. An entry basic block is created in the function.
7530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::GlobalVariable]. **)
75446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue
75546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         = "llvm_define_function"
7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name
7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [name] exists in module [m]. If no such function exists, returns [None].
7590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Module] constructor. **)
7606d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option
7616d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen                         = "llvm_lookup_function"
7620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f].
7640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::eraseFromParent]. **)
76546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function"
7660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [params f] returns the parameters of function [f].
7680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getArgumentList]. **)
76946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params"
7700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param f n] returns the [n]th parameter of function [f].
7720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getArgumentList]. **)
77346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param"
7740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic.
7760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::isIntrinsic]. **)
77746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic"
7780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f].
7800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getCallingConv]. **)
78146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv"
7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
7830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function
7840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [f] to the calling convention numbered [cc].
7850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::setCallingConv]. **)
78646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit
78746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                                = "llvm_set_function_call_conv"
78846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
78980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [collector f] returns [Some name] if the function [f] has a garbage
79080a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    collection algorithm specified and [None] otherwise.
79180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    See the method [llvm::Function::getCollector]. **)
79280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal collector : llvalue -> string option = "llvm_collector"
79380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen
79480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [set_collector gc f] sets the collection algorithm for the function [f] to
79580a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen    [gc]. See the method [llvm::Function::setCollector]. **)
79680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal set_collector : string option -> llvalue -> unit = "llvm_set_collector"
79780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen
79846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on basic blocks .........................................--*)
7990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f].
8010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getBasicBlockList]. **)
80246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks"
8030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f].
8050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::Function::getEntryBlock]. **)
80646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock"
8070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb].
8090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::BasicBlock::eraseFromParent]. **)
81046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block"
8110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [append_block name f] creates a new basic block named [name] at the end of
8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    function [f].
8140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::BasicBlock]. **)
81546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal append_block : string -> llvalue -> llbasicblock = "llvm_append_block"
8160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [insert_block name bb] creates a new basic block named [name] before the
8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    basic block [bb].
8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the constructor of [llvm::BasicBlock]. **)
82046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal insert_block : string -> llbasicblock -> llbasicblock
82146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_insert_block"
8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. **)
82446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue"
8250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and
8270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [false] otherwise.
8280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    Similar to [llvm::isa<BasicBlock>]. **)
82946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block"
8300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. **)
83246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock"
83346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
8342618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen(*--... Operations on phi nodes ............................................--*)
8350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use
8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    with branches from [bb]. See the method [llvm::PHINode::addIncoming]. **)
8382618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit
8392618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen                      = "llvm_add_incoming"
8400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn].
8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::PHINode::getIncomingValue]. **)
8432618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming"
8442618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen
84546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
84646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*===-- Instruction builders ----------------------------------------------===*)
8470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the
8490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction [isn]. See the constructor for [llvm::LLVMBuilder]. **)
85046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_before : llvalue -> llbuilder = "llvm_builder_before"
8510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of
8530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. **)
85446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_at_end : llbasicblock -> llbuilder = "llvm_builder_at_end"
8550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the
8570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **)
85846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_before : llvalue -> llbuilder -> unit = "llvm_position_before"
8590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the
8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **)
86246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_at_end : llbasicblock -> llbuilder -> unit
86346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         = "llvm_position_at_end"
86446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
86546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Terminators ........................................................--*)
8660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a
8680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret void]
8690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateRetVoid]. **)
87146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void"
8720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a
8740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [ret %v]
8750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateRet]. **)
87746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret"
8780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a
8800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [b %bb]
8810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateBr]. **)
88346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br"
8840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a
8860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [b %cond, %tbb, %fbb]
8870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateCondBr]. **)
88946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder ->
89046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                         llvalue = "llvm_build_cond_br"
8910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_switch case elsebb b] creates an empty
8930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [switch %case, %elsebb]
8940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
8950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSwitch]. **)
89646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue
89746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_switch"
8980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
8990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an
9000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = invoke %fn(args) to %tobb unwind %unwindbb]
9010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateInvoke]. **)
90346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock ->
90446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        llbasicblock -> string -> llbuilder -> llvalue
90546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_invoke_bc" "llvm_build_invoke_nat"
9060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an
9080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [unwind]
9090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUnwind]. **)
91146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind"
9120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an
9140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [unreachable]
9150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUnwind]. **)
91746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable"
91846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
91946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Arithmetic .........................................................--*)
9200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a
9220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = add %x, %y]
9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAdd]. **)
92546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue
92646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_add"
9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a
9290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sub %x, %y]
9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSub]. **)
93246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue
93346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_sub"
9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a
9360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = mul %x, %y]
9370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateMul]. **)
93946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue
94046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_mul"
9410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a
9430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = udiv %x, %y]
9440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUDiv]. **)
94646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
94746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_udiv"
9480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a
9500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sdiv %x, %y]
9510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSDiv]. **)
95346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
95446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_sdiv"
9550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a
9570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fdiv %x, %y]
9580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFDiv]. **)
96046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue
96146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_fdiv"
9620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a
9640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = urem %x, %y]
9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateURem]. **)
96746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue
96846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_urem"
9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a
9710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = srem %x, %y]
9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSRem]. **)
97446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue
97546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_srem"
9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a
9780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = frem %x, %y]
9790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFRem]. **)
98146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue
98246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_frem"
9830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a
9850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = shl %x, %y]
9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateShl]. **)
98846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue
98946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_shl"
9900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a
9920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = lshr %x, %y]
9930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateLShr]. **)
99546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue
99646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_lshr"
9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
9980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a
9990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = ashr %x, %y]
10000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAShr]. **)
100246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue
100346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_ashr"
10040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a
10060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = and %x, %y]
10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAnd]. **)
100946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue
101046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_and"
10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a
10130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = or %x, %y]
10140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateOr]. **)
101646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue
101746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                  = "llvm_build_or"
10180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a
10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = xor %x, %y]
10210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateXor]. **)
102346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue
102446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_xor"
10250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a
10270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sub 0, %x]
10280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [-0.0] is used for floating point types to compute the correct sign.
10300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateNeg]. **)
103146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue
103246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_neg"
10330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a
10350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = xor %x, -1]
10360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [-1] is the correct "all ones" value for the type of [x].
10380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateXor]. **)
103946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue
104046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_not"
104146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
104246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Memory .............................................................--*)
10430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_malloc ty name b] creates a
10450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = malloc %ty]
10460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
104846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_malloc : lltype -> string -> llbuilder -> llvalue
104946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_malloc"
10500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_malloc ty n name b] creates a
10520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = malloc %ty, %n]
10530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateMalloc]. **)
105546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder ->
105646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                              llvalue = "llvm_build_array_malloc"
10570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a
10590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = alloca %ty]
10600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
106246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue
106346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_alloca"
10640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a
10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = alloca %ty, %n]
10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateAlloca]. **)
106946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder ->
107046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                              llvalue = "llvm_build_array_alloca"
10710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_free v b] creates a
10730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [free %v]
10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFree]. **)
107646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free"
10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a
10790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = load %v]
10800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateLoad]. **)
108246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue
108346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_load"
10840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a
10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [store %v, %p]
10870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateStore]. **)
108946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue
109046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_store"
10910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
10920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store p indices name b] creates a
10930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = gep %p, indices...]
10940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
10950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateGetElementPtr]. **)
109646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue
109746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                   = "llvm_build_gep"
109846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
109946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Casts ..............................................................--*)
11000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a
11020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = trunc %p to %ty]
11030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateTrunc]. **)
110546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue
110646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_trunc"
11070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a
11090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = zext %p to %ty]
11100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateZExt]. **)
111246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue
111346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_zext"
11140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a
11160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sext %p to %ty]
11170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSExt]. **)
111946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue
112046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_sext"
11210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a
11230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptoui %p to %ty]
11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPToUI]. **)
112646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue
112746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_fptoui"
11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a
11300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptosi %p to %ty]
11310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPToSI]. **)
113346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue
113446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_fptosi"
11350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a
11370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = uitofp %p to %ty]
11380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateUIToFP]. **)
114046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue
114146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_uitofp"
11420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a
11440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = sitofp %p to %ty]
11450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSIToFP]. **)
114746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue
114846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_sitofp"
11490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a
11510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fptrunc %p to %ty]
11520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPTrunc]. **)
115446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue
115546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                       = "llvm_build_fptrunc"
11560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a
11580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fpext %p to %ty]
11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFPExt]. **)
116146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue
116246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                     = "llvm_build_fpext"
11630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a
11650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = prtotint %p to %ty]
11660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreatePtrToInt]. **)
116846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue
116946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        = "llvm_build_prttoint"
11700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a
11720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = inttoptr %p to %ty]
11730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateIntToPtr]. **)
117546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue
117646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        = "llvm_build_inttoptr"
11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a
11790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = bitcast %p to %ty]
11800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateBitcast]. **)
118246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue
118346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                       = "llvm_build_bitcast"
118446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
118546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Comparisons ........................................................--*)
11860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a
11880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = icmp %pred %x, %y]
11890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateICmp]. **)
1191404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string ->
119246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      llbuilder -> llvalue = "llvm_build_icmp"
11930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
11940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a
11950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = fcmp %pred %x, %y]
11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
11970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateFCmp]. **)
1198404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string ->
119946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      llbuilder -> llvalue = "llvm_build_fcmp"
120046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen
120146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Miscellaneous instructions .........................................--*)
12020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a
12040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = phi %incoming]
12050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [incoming] is a list of [(llvalue, llbasicblock)] tuples.
12070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreatePHI]. **)
12082618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder ->
12092618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen                     llvalue = "llvm_build_phi"
12100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a
12120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = call %fn(args...)]
12130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateCall]. **)
121546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue
121646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                    = "llvm_build_call"
12170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a
12190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = select %cond, %thenv, %elsev]
12200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateSelect]. **)
122246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder ->
122346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                        llvalue = "llvm_build_select"
12240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a
12260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = va_arg %valist, %argty]
12270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateVAArg]. **)
122946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue
123046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                      = "llvm_build_va_arg"
12310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a
12330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = extractelement %vec, %i]
12340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateExtractElement]. **)
123646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder ->
123746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                                llvalue = "llvm_build_extractelement"
12380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a
12400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = insertelement %vec, %elt, %i]
12410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateInsertElement]. **)
124346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string ->
124446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                               llbuilder -> llvalue = "llvm_build_insertelement"
12450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen
12460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a
12470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    [%name = shufflevector %veca, %vecb, %mask]
12480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    instruction at the position specified by the instruction builder [b].
12490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen    See the method [llvm::LLVMBuilder::CreateShuffleVector]. **)
125046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string ->
125146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen                               llbuilder -> llvalue = "llvm_build_shufflevector"
12521ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12531ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
12541ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(*===-- Module providers --------------------------------------------------===*)
12551ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen
1256da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule ModuleProvider : sig
1257da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  (** [create_module_provider m] encapsulates [m] in a module provider and takes
1258da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen      ownership of the module. See the constructor 
1259da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen      [llvm::ExistingModuleProvider::ExistingModuleProvider]. **)
1260da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  external create : llmodule -> llmoduleprovider
1261da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen                  = "LLVMCreateModuleProviderForExistingModule"
1262da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen
1263da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  (** [dispose_module_provider mp] destroys the module provider [mp] as well as
1264da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen      the contained module. **)
1265da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider"
1266da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend
1267da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  
1268da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen
1269da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(*===-- Memory buffers ----------------------------------------------------===*)
1270da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen
1271da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig
1272da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  (** [of_file p] is the memory buffer containing the contents of the file at 
1273da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen      path [p]. If the file could not be read, then [IoError msg] is raised. **)
1274da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file"
1275da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  
1276da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  (** [stdin ()] is the memory buffer containing the contents of standard input.
1277da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen      If standard input is empty, then [IoError msg] is raised. **)
1278da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin"
1279da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  
1280da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  (** Disposes of a memory buffer. **)
1281da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen  external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose"
1282da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend
1283