llvm.mli revision c59286bff1cca8c4fa15f390c9002db94117614e
1bbf1c514bd832bf1306fe3e87221fd78bbc306efGordon Henriksen(*===-- llvm/llvm.mli - LLVM Ocaml Interface -------------------------------===* 28ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 38ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * The LLVM Compiler Infrastructure 48ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 5234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * This file is distributed under the University of Illinois Open Source 6234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * License. See LICENSE.TXT for details. 78ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 88ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *===----------------------------------------------------------------------===*) 98ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** Core API. 113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen This interface provides an ocaml API for the LLVM intermediate 133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen representation, the classes in the VMCore library. *) 143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Abstract types} 178ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen These abstract types correlate directly to the LLVM VMCore classes. *) 190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 205371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** The top-level container for all LLVM global data. See the 215371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::LLVMContext] class. *) 225371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaartype llcontext 235371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The top-level container for all other LLVM Intermediate Representation (IR) 253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen objects. See the [llvm::Module] class. *) 268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llmodule 270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Each value in the LLVM IR has a type, an instance of [lltype]. See the 293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type] class. *) 303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksentype lltype 310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** When building recursive types using {!refine_type}, [lltype] values may 330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen become invalid; use [lltypehandle] to resolve this problem. See the 343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::AbstractTypeHolder] class. *) 351cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksentype lltypehandle 360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Any value in the LLVM IR. Functions, instructions, global variables, 380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, and much more are all [llvalues]. See the [llvm::Value] class. 393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen This type covers a wide range of subclasses. *) 408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llvalue 410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** A basic block in LLVM IR. See the [llvm::BasicBlock] class. *) 430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype llbasicblock 440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Used to generate instructions in the LLVM IR. See the [llvm::LLVMBuilder] 463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen class. *) 4746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype llbuilder 488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 49da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to provide a module to JIT or interpreter. 503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ModuleProvider] class. *) 511ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksentype llmoduleprovider 521ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 53da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to efficiently handle large buffers of read-only binary data. 543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::MemoryBuffer] class. *) 55da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksentype llmemorybuffer 56da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type::TypeID] enumeration. *) 59404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind : sig 60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Void 62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Float 63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Double 64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | X86fp80 65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Fp128 66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ppc_fp128 67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Label 68404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Integer 69404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Function 70404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Struct 71404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Array 72404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Pointer 73404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Opaque 74404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Vector 7532eaeca34fe1e6080a2916e04c89874f0b273e31Bob Wilson | Metadata 761940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar | Union 77404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 788ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linkage of a global value, accessed with {!linkage} and 803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_linkage}. See [llvm::GlobalValue::LinkageTypes]. *) 81404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig 82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 83404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen External 8414b9ed13e79d4b8fe97e2215e7ccf095a40463fdNick Lewycky | Available_externally 85404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 864aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Link_once_odr 87404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 884aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Weak_odr 89404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 90404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 914aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Private 92404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 93404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 94404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 95404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 964aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Common 974aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Linker_private 98404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linker visibility of a global value, accessed with {!visibility} and 1013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_visibility}. See [llvm::GlobalValue::VisibilityTypes]. *) 102404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig 103404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 104404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Default 105404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 106404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 107404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 1088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The following calling convention values may be accessed with 1103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!function_call_conv} and {!set_function_call_conv}. Calling 1113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen conventions are open-ended. *) 1121475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv : sig 1133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen val c : int (** [c] is the C calling convention. *) 1141475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val fast : int (** [fast] is the calling convention to allow LLVM 1150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 1163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen internal linkage. *) 1171475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val cold : int (** [cold] is the calling convention for 1183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen callee-save. *) 1191475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_stdcall : int (** [x86_stdcall] is the familiar stdcall calling 1203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1211475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_fastcall : int (** [x86_fastcall] is the familiar fastcall calling 1223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1231475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 12446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 125e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsmodule Attribute : sig 126e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands type t = 127e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Zext 128e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Sext 129e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noreturn 130e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Inreg 131e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Structret 132e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nounwind 133e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noalias 134e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Byval 135e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nest 136e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readnone 137e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readonly 138f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noinline 139f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Alwaysinline 140f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Optsize 141f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Ssp 142f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Sspreq 143f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Nocapture 144f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noredzone 145f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noimplicitfloat 146f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Naked 147570a4a5d9ca31f276a67502d1e0533d59d331feaJakob Stoklund Olesen | Inlinehint 148e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsend 149e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 1513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. *) 152404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig 153404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 154404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Eq 155404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ne 156404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 157404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 158404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 159404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 160404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sgt 161404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sge 162404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Slt 163404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sle 164404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 16546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 1673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. *) 168404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig 169404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 170404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | False 171404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oeq 172404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ogt 173404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oge 174404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Olt 175404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ole 176404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | One 177404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ord 178404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uno 179404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ueq 180404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 181404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 182404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 183404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 184404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Une 185404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | True 186404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 18746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** {6 Iteration} *) 1904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [Before b] and [At_end a] specify positions from the start of the ['b] list 192224fceb41f993fbc954345f053dab4e8caf28329Gordon Henriksen of [a]. [llpos] is used to specify positions in and for forward iteration 1934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen through the various value lists maintained by the LLVM IR. *) 1944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 1954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 1964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 1974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [After b] and [At_start a] specify positions from the end of the ['b] list 1994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of [a]. [llrev_pos] is used for reverse iteration through the various value 2004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen lists maintained by the LLVM IR. *) 2014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 2024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 2034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 2044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 2054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 2063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Exceptions} *) 2073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 208da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 209da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2115371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** {6 Contexts} *) 2125371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2135371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_context ()] creates a context for storing the "global" state in 2145371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar LLVM. See the constructor [llvm::LLVMContext]. *) 2155371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal create_context : unit -> llcontext = "llvm_create_context" 2165371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2175371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [destroy_context ()] destroys a context. See the destructor 2185371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::LLVMContext::~LLVMContext]. *) 219dd7da4f368c7e1139ef78f36ef173a8b8f8f1c61Chris Lattnerexternal dispose_context : llcontext -> unit = "llvm_dispose_context" 2205371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2215371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** See the function [llvm::getGlobalContext]. *) 2225371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal global_context : unit -> llcontext = "llvm_global_context" 2235371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 22446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdkind_id context name] returns the MDKind ID that corresponds to the 22546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar name [name] in the context [context]. See the function 22646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::LLVMContext::getMDKindID]. *) 22746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal mdkind_id : llcontext -> string -> int = "llvm_mdkind_id" 22846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 2295371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 2318ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2325371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_module context id] creates a module with the supplied module ID in 2335371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. Modules are not garbage collected; it is mandatory 2345371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar to call {!dispose_module} to free memory. See the constructor 2355371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::Module::Module]. *) 2365371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal create_module : llcontext -> string -> llmodule = "llvm_create_module" 2378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 2390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 2400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 2413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 2428ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 2438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 244a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 2453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 246a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal target_triple: llmodule -> string 247a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_target_triple" 248a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 249a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 2503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 251a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_target_triple: string -> llmodule -> unit 252a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_target_triple" 253a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 254a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 255a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 2563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 257a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal data_layout: llmodule -> string 258a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_data_layout" 259a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 260a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 2613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 262a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_data_layout: string -> llmodule -> unit 263a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_data_layout" 264a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 2650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table. 2660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Returns [true] if successful. If such a name already exists, then no entry 2670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen is added and [false] is returned. See the [llvm::Module::addTypeName] 2683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method. *) 26946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool 27046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_add_type_name" 27146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol 2730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen table. *) 27446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit 27546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_delete_type_name" 2768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2773c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 2783c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 2793c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksenexternal dump_module : llmodule -> unit = "llvm_dump_module" 2803c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 2818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 2830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 2853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 286404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type" 2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2885371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [type_context ty] returns the {!llcontext} corresponding to the type [ty]. 2895371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar See the method [llvm::Type::getContext]. *) 2905371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal type_context : lltype -> llcontext = "llvm_type_context" 2915371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 2938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 2948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 297b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i1_type c] returns an integer type of bitwidth 1 in the context [c]. See 298b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int1Ty]. *) 299b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i1_type : llcontext -> lltype = "llvm_i1_type" 3000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 301b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i8_type c] returns an integer type of bitwidth 8 in the context [c]. See 302b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int8Ty]. *) 303b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i8_type : llcontext -> lltype = "llvm_i8_type" 3040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 305b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i16_type c] returns an integer type of bitwidth 16 in the context [c]. See 306b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int16Ty]. *) 307b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i16_type : llcontext -> lltype = "llvm_i16_type" 3080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 309b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i32_type c] returns an integer type of bitwidth 32 in the context [c]. See 310b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int32Ty]. *) 311b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i32_type : llcontext -> lltype = "llvm_i32_type" 3120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 313b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i64_type c] returns an integer type of bitwidth 64 in the context [c]. See 314b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int64Ty]. *) 315b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i64_type : llcontext -> lltype = "llvm_i64_type" 3160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 317b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_type c n] returns an integer type of bitwidth [n] in the context 318b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See the method [llvm::IntegerType::get]. *) 319b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal integer_type : llcontext -> int -> lltype = "llvm_integer_type" 3200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 321b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_bitwidth c ty] returns the number of bits in the integer type [ty] 322b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar in the context [c]. See the method [llvm::IntegerType::getBitWidth]. *) 3238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 3248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 3273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 328b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [float_type c] returns the IEEE 32-bit floating point type in the context 329b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FloatTy]. *) 330b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal float_type : llcontext -> lltype = "llvm_float_type" 3310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 332b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [double_type c] returns the IEEE 64-bit floating point type in the context 333b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::DoubleTy]. *) 334b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal double_type : llcontext -> lltype = "llvm_double_type" 3350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 336b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [x86fp80_type c] returns the x87 80-bit floating point type in the context 337b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::X86_FP80Ty]. *) 338b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal x86fp80_type : llcontext -> lltype = "llvm_x86fp80_type" 3390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 340b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [fp128_type c] returns the IEEE 128-bit floating point type in the context 341b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FP128Ty]. *) 342b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal fp128_type : llcontext -> lltype = "llvm_fp128_type" 3430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 344b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [ppc_fp128_type c] returns the PowerPC 128-bit floating point type in the 345b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. See [llvm::Type::PPC_FP128Ty]. *) 346b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal ppc_fp128_type : llcontext -> lltype = "llvm_ppc_fp128_type" 3478ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 3500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 3520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 3533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 354957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 3550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like 3570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 3593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 360957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 361957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 3620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 3643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 3658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 3660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 3683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 369d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 3700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 3723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 3738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 3748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 3770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3785371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [struct_type context tys] returns the structure type in the context 3795371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [context] containing in the types in the array [tys]. See the method 3805371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 3815371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal struct_type : llcontext -> lltype array -> lltype 3825371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_struct_type" 3830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3845371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [packed_struct_type context ys] returns the packed structure type in the 3855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar context [context] containing in the types in the array [tys]. See the method 3865371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 3875371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal packed_struct_type : llcontext -> lltype array -> lltype 3885371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_packed_struct_type" 3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3901940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [struct_element_types sty] returns the constituent types of the struct type 3911940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [sty]. See the method [llvm::StructType::getElementType]. *) 3921940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal struct_element_types : lltype -> lltype array 3931940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar = "llvm_struct_element_types" 3940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 3963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 3978ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 3988ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4001940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** {7 Operations on union types} *) 4011940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4021940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [union_type context tys] returns the union type in the context [context] 4031940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar containing the types in the array [tys]. See the method 4041940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [llvm::UnionType::get] *) 4051940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal union_type : llcontext -> lltype array -> lltype = "llvm_union_type" 4061940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4071940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [union_element_types uty] returns the constituent types of the union type 4081940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [uty]. See the method [llvm::UnionType::getElementType]. *) 4091940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal union_element_types : lltype -> lltype array 4101940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar = "llvm_union_element_types" 4111940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4121940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 4163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 417957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 42057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 4213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 42257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 42357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 42457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 42557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 4263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 42757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 42857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 4313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 432957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 4338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 4353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 436d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 4370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 4393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 4408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 4410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 44257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 4433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 44457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 44557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 4460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 4473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 4488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 4498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 453b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [opaque_type c] creates a new opaque type distinct from any other in the 454b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. Opaque types are useful for building recursive types in 455b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar combination with {!refine_type}. See [llvm::OpaqueType::get]. *) 456b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal opaque_type : llcontext -> lltype = "llvm_opaque_type" 4570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 458b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [void_type c] creates a type of a function which does not return any 459b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value in the context [c]. See [llvm::Type::VoidTy]. *) 460b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal void_type : llcontext -> lltype = "llvm_void_type" 4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 462b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [label_type c] creates a type of a basic block in the context [c]. See 463b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::LabelTy]. *) 464b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal label_type : llcontext -> lltype = "llvm_label_type" 4658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on type handles} *) 4670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later 4693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen refined as a result of a call to {!refine_type}, the handle will be updated; 4700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen any bare [lltype] references will become invalid. 4713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the class [llvm::PATypeHolder]. *) 4721cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" 4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh]. 4753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PATypeHolder::get()]. *) 4761cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" 4770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the 4793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen concrete type [ty] in all users. Warning: This may invalidate {!lltype} 4803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values! Use {!lltypehandle} to manipulate potentially abstract types. See 4813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the method [llvm::Type::refineAbstractType]. *) 4821cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type" 4831cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 4848ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 4883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 4898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 4900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 4920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 4930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 4943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 4958ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 4983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 4998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 5000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 5023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 50388cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 5048ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 5070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 5093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 510344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 5133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 514e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 5173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 518e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 5213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 522e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 5230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 5253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 5268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 5270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 5293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 530344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 5318ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 53346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on instructions} *) 53446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 53546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [has_metadata i] returns whether or not the instruction [i] has any 53646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar metadata attached to it. See the function 53746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::hasMetadata]. *) 53846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal has_metadata : llvalue -> bool = "llvm_has_metadata" 53946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 54046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [metadata i kind] optionally returns the metadata associated with the 54146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar kind [kind] in the instruction [i] See the function 54246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::getMetadata]. *) 54346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal metadata : llvalue -> int -> llvalue option = "llvm_metadata" 54446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 54546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_metadata i kind md] sets the metadata [md] of kind [kind] in the 54646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 54746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal set_metadata : llvalue -> int -> llvalue -> unit = "llvm_set_metadata" 54846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 54946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_metadata i kind] clears the metadata of kind [kind] in the 55046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 55146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal clear_metadata : llvalue -> int -> unit = "llvm_clear_metadata" 55246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 55346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 55446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on metadata} *) 55546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 55646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdstring c s] returns the MDString of the string [s] in the context [c]. 55746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 55846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal mdstring : llcontext -> string -> llvalue = "llvm_mdstring" 55946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 56046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdnode c elts] returns the MDNode containing the values [elts] in the 56146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar context [c]. 56246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 56346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal mdnode : llcontext -> llvalue array -> llvalue = "llvm_mdnode" 56446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 56546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 5663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 5670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 5693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 570e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 5733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 574e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 575e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 57745d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_int_of_string ty s r] returns the integer constant of type [ty] and 57845d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar * value [s], with the radix [r]. See the method [llvm::ConstantInt::get]. *) 57945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_int_of_string : lltype -> string -> int -> llvalue 58045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_int_of_string" 58145d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 5820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 5832b526fec6a03be58f56e885af6b53c197973e573Erick Tryzelaar value [n]. See the method [llvm::ConstantFP::get]. *) 584e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 5858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 58645d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_float_of_string ty s] returns the floating point constant of type 58745d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar [ty] and value [n]. See the method [llvm::ConstantFP::get]. *) 58845d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_float_of_string : lltype -> string -> llvalue 58945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_float_of_string" 59045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 5913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 5930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 594b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_string c s] returns the constant [i8] array with the values of the 595b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] in the context [c]. The array is not 596b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar null-terminated (but see {!const_stringz}). This value can in turn be used 597b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar as the initializer for a global variable. See the method 598b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::ConstantArray::get]. *) 599b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_string : llcontext -> string -> llvalue = "llvm_const_string" 6000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 601b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_stringz c s] returns the constant [i8] array with the values of the 602b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] and a null terminator in the context [c]. This 603b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value can in turn be used as the initializer for a global variable. 6043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 605b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_stringz : llcontext -> string -> llvalue = "llvm_const_stringz" 6060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 6080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 6090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 6103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 611e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 6120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6135371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_struct context elts] returns the structured constant of type 6145371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [struct_type (Array.map type_of elts)] and containing the values [elts] 6155371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar in the context [context]. This value can in turn be used as the initializer 6165371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for a global variable. See the method [llvm::ConstantStruct::get]. *) 6175371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_struct : llcontext -> llvalue array -> llvalue 6185371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_const_struct" 6195371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 6205371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_packed_struct context elts] returns the structured constant of 6215371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar type {!packed_struct_type} [(Array.map type_of elts)] and containing the 6225371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar values [elts] in the context [context]. This value can in turn be used as 6235371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the initializer for a global variable. See the method 6245371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::ConstantStruct::get]. *) 6255371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_packed_struct : llcontext -> llvalue array -> llvalue 626e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 6270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 6303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 631e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 6328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6331940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [const_union ty v] returns the union constant of type [union_type tys] and 6341940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar containing the value [v]. See the method [llvm::ConstantUnion::get]. *) 6351940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal const_union : lltype -> llvalue -> llvalue = "LLVMConstUnion" 6361940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 6373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 6383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 640ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands(** [align_of ty] returns the alignof constant for the type [ty]. This is 641ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands equivalent to [const_ptrtoint (const_gep (const_null (pointer_type {i8,ty})) 642ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 0) (const_int i32_type 1)) i32_type], but considerably 643ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands more readable. See the method [llvm::ConstantExpr::getAlignOf]. *) 644ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sandsexternal align_of : lltype -> llvalue = "LLVMAlignOf" 645ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 6460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 6470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 648ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 1)) i64_type], but considerably more readable. 6493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 650e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 6510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 6533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 6544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 6550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 65619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_neg c] returns the arithmetic negation of the constant [c] with 65719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the negation overflows. 65819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWNeg]. *) 65919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_neg : llvalue -> llvalue = "LLVMConstNSWNeg" 66019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 66119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_neg c] returns the arithmetic negation of the constant [c] with 66219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the negation overflows. 66319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNUWNeg]. *) 66419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_neg : llvalue -> llvalue = "LLVMConstNUWNeg" 66519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6661b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fneg c] returns the arithmetic negation of the constant float [c]. 6671b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFNeg]. *) 6681b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fneg : llvalue -> llvalue = "LLVMConstFNeg" 6691b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 6713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 6724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 6730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 6753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 6764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 6770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6781b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_nsw_add c1 c2] returns the constant sum of two constants with no 6791b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed wrapping. The result is undefined if the sum overflows. 6801b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 6811b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_nsw_add : llvalue -> llvalue -> llvalue = "LLVMConstNSWAdd" 6821b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 68319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_add c1 c2] returns the constant sum of two constants with no 68419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unsigned wrapping. The result is undefined if the sum overflows. 68519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 68619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_add : llvalue -> llvalue -> llvalue = "LLVMConstNUWAdd" 68719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fadd c1 c2] returns the constant sum of two constant floats. 6891b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFAdd]. *) 6901b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fadd : llvalue -> llvalue -> llvalue = "LLVMConstFAdd" 6911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 6933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 6944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 69619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_sub c1 c2] returns the constant difference of two constants with 69719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 69819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 69919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNSWSub" 70019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 70119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_sub c1 c2] returns the constant difference of two constants with 70219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 70319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 70419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNUWSub" 70519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 7061b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fsub c1 c2] returns the constant difference, [c1 - c2], of two 7071b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant floats. See the method [llvm::ConstantExpr::getFSub]. *) 7081b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fsub : llvalue -> llvalue -> llvalue = "LLVMConstFSub" 7091b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 7113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 7124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 71419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_mul c1 c2] returns the constant product of two constants with 71519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 71619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 71719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNSWMul" 71819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 71919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_mul c1 c2] returns the constant product of two constants with 72019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 72119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 72219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNUWMul" 72319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 7241b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fmul c1 c2] returns the constant product of two constants floats. 7251b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFMul]. *) 7261b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fmul : llvalue -> llvalue -> llvalue = "LLVMConstFMul" 7271b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 7290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 7303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 7314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 7320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 7351b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSDiv]. *) 7364647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 7370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_exact_sdiv c1 c2] returns the constant quotient [c1 / c2] of two 7391b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed integer constants. The result is undefined if the result is rounded 7405371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar or overflows. See the method [llvm::ConstantExpr::getExactSDiv]. *) 7411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_exact_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstExactSDiv" 7421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 7440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 7453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 7464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 7470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7481b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_urem c1 c2] returns the constant remainder [c1 MOD c2] of two 7490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 7503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 7514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 7520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7531b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_srem c1 c2] returns the constant remainder [c1 MOD c2] of two 7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 7553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 7564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 7590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 7603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 7614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 7620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 7640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 7664647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 7670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 7690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 7714647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 7720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 7740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 7764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 7770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 7790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 7803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 781404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 7824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 7830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 7850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 7863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 787404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 7884647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 7890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 7910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 7923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 7934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 7940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 7960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 7973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 7984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 7990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 8010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 8023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 8034647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 8060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 8073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 8084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 8090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8101b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_in_bounds_gep pc indices] returns the constant [getElementPtr] of [p1] 8111b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar with the constant integers indices from the array [indices]. 8121b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getInBoundsGetElementPtr]. *) 8131b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_in_bounds_gep : llvalue -> llvalue array -> llvalue 8141b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_in_bounds_gep" 8151b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 8183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 8194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 8200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 8233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 8244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 8250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 8270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 8283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 8294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 8300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 8320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 8333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 8344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 8350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 8383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 8394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 8400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 8433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 8444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 8450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 8470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 8483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 8494647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 8500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 8520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 8533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 8544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 8550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 8570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 8583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 8594647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 8633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 8644647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 8650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 8670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 8683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 8694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 8700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 8720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 8733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 8744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 8750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8761b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_zext_or_bitcast c ty] returns a constant zext or bitwise cast 8771b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8781b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getZExtOrBitCast]. *) 8791b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_zext_or_bitcast : llvalue -> lltype -> llvalue 8801b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstZExtOrBitCast" 8811b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8821b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_sext_or_bitcast c ty] returns a constant sext or bitwise cast 8831b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8841b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSExtOrBitCast]. *) 8851b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_sext_or_bitcast : llvalue -> lltype -> llvalue 8861b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstSExtOrBitCast" 8871b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_trunc_or_bitcast c ty] returns a constant trunc or bitwise cast 8891b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8901b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getTruncOrBitCast]. *) 8911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_trunc_or_bitcast : llvalue -> lltype -> llvalue 8921b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstTruncOrBitCast" 8931b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8941b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_pointercast c ty] returns a constant bitcast or a pointer-to-int 8951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar cast conversion of constant [c] to type [ty] of equal size. 8961b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getPointerCast]. *) 8971b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_pointercast : llvalue -> lltype -> llvalue 8981b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstPointerCast" 8991b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9001b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_intcast c ty] returns a constant zext, bitcast, or trunc for integer 9011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar -> integer casts of constant [c] to type [ty]. 9021b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getIntCast]. *) 9031b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_intcast : llvalue -> lltype -> llvalue 9041b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstIntCast" 9051b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9061b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> 9075371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar fp casts of constant [c] to type [ty]. 9081b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFPCast]. *) 9091b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fpcast : llvalue -> lltype -> llvalue 9101b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstFPCast" 9111b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 9130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 9143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 9154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 9164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 9170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 9190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 9200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 9213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 9224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 9234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 9280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 9290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 9303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 9314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 9324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 9330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 9350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the LLVM Language Reference for details on the [sufflevector] 9360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 9373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 9384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 9394647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 9404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_extractvalue agg idxs] returns the constant [idxs]th value of 9421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant aggregate [agg]. Each [idxs] must be less than the size of the 9431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar aggregate. See the method [llvm::ConstantExpr::getExtractValue]. *) 9441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_extractvalue : llvalue -> int array -> llvalue 9451b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_extractvalue" 9461b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9471b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_insertvalue agg val idxs] inserts the value [val] in the specified 9481b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar indexs [idxs] in the aggegate [agg]. Each [idxs] must be less than the size 9491b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar of the aggregate. See the method [llvm::ConstantExpr::getInsertValue]. *) 9501b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_insertvalue : llvalue -> llvalue -> int array -> llvalue 9511b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_insertvalue" 9521b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 953c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [block_address f bb] returns the address of the basic block [bb] in the 954c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar function [f]. See the method [llvm::BasicBlock::get]. *) 955c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal block_address : llvalue -> llbasicblock -> llvalue = "LLVMBlockAddress" 956c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 9573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 9583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 9590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 960dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 961dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 962dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" 963dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 9640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 9663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 9678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 9680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 9703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 971404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage" 9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 9743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 975404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" 9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 9783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 9798ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 9800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 9823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 9838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 9840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 9863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 987404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility" 9880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 9903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 991404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit 992404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen = "llvm_set_visibility" 9930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 9953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 9968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 9993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 10008ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 10018ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 10023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 10033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 10040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 10060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a global variable already exists, 10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing global differs, then a bitcast 10083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 10098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 10108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 10130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer [init] in module [m]. If the named global already exists, it is 10140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. 10153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 10168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 10178ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 10180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 10213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 10226d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 10236d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 10240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 10263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 10278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 10280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 10304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 10314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 10324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 10334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_begin : llmodule -> (llmodule, llvalue) llpos 10344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_begin" 10354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 10374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 10384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 10394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_succ : llvalue -> (llmodule, llvalue) llpos 10404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_succ" 10414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 10434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 10444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 10454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 10474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 10484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 10494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 10514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 10524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 10534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 10544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_end : llmodule -> (llmodule, llvalue) llrev_pos 10554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_end" 10564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 10584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 10594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 10604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_pred : llvalue -> (llmodule, llvalue) llrev_pos 10614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_pred" 10624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 10644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 10654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 10664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 10684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 10694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 10704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 10720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 10733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 10783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 10790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 10800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen = "llvm_set_global_constant" 10810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 10833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 108446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 10870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 10883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 10898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 10900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 10920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 10933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 10948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 10950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 10970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 10983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 10998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 11000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 11020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 11033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 11048ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 11058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 11063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 11080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 11100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 11110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 11123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 111346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 111446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 11150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 11170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 11180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 11193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 112046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 112146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 11220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 11253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 11266d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 11276d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 11303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 113146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 11344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 11354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 11364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 11374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_begin : llmodule -> (llmodule, llvalue) llpos 11384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_begin" 11394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 11414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 11424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 11434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_succ : llvalue -> (llmodule, llvalue) llpos 11444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_succ" 11454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 11474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 11484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 11494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 11514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 11524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 11534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 11554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 11564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 11574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 11584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_end : llmodule -> (llmodule, llvalue) llrev_pos 11594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_end" 11604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 11624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 11634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_pred : llvalue -> (llmodule, llvalue) llrev_pos 11644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_pred" 11654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 11674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 11684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 11694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 11714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 11724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 11734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 11753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 117646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 11793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 118046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 11810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 11830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 11843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 118546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 118646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 118746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11885eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [gc f] returns [Some name] if the function [f] has a garbage 118980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 11905eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen See the method [llvm::Function::getGC]. *) 11915eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal gc : llvalue -> string option = "llvm_gc" 119280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 11935eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [set_gc gc f] sets the collection algorithm for the function [f] to 11945eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen [gc]. See the method [llvm::Function::setGC]. *) 11955eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal set_gc : string option -> llvalue -> unit = "llvm_set_gc" 119680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1197e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_function_attr f a] adds attribute [a] to the return type of function 1198e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [f]. *) 1199e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_function_attr : llvalue -> Attribute.t -> unit 1200e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_function_attr" 1201e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1202e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_function_attr f a] removes attribute [a] from the return type of 1203e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands function [f]. *) 1204e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_function_attr : llvalue -> Attribute.t -> unit 1205e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_function_attr" 12063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1207dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 1208dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1209dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 1210dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1211dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 1212dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1213dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 1214dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1215dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 1216dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1217dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 1218dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 1219dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param_parent : llvalue -> llvalue = "LLVMGetParamParent" 1220dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 12224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 12234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 12244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 12254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_begin : llvalue -> (llvalue, llvalue) llpos = "llvm_param_begin" 12264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 12284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 12294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 12304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_succ : llvalue -> (llvalue, llvalue) llpos = "llvm_param_succ" 12314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 12334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 12344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 12354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 12374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 12384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 12394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 12414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 12424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 12434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 12444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_end : llvalue -> (llvalue, llvalue) llrev_pos = "llvm_param_end" 12454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 12474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 12484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_pred : llvalue -> (llvalue, llvalue) llrev_pos 12494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_param_pred" 12504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 12524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 12534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 12544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 12564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 12574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 12584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1259e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_param p a] adds attribute [a] to parameter [p]. *) 1260e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_param_attr : llvalue -> Attribute.t -> unit = "llvm_add_param_attr" 1261e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1262e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_param_attr p a] removes attribute [a] from parameter [p]. *) 1263e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_param_attr : llvalue -> Attribute.t -> unit 1264e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_param_attr" 1265e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1266e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [set_param_alignment p a] set the alignment of parameter [p] to [a]. *) 1267e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal set_param_alignment : llvalue -> int -> unit 1268e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_set_param_alignment" 1269dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 12710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 12733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 127446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 12750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 12773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 127846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 12790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 12813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 128246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 12830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1284b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [append_block c name f] creates a new basic block named [name] at the end of 1285b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar function [f] in the context [c]. 12863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1287b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal append_block : llcontext -> string -> llvalue -> llbasicblock 1288b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar = "llvm_append_block" 12890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1290b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [insert_block c name bb] creates a new basic block named [name] before the 1291b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar basic block [bb] in the context [c]. 12923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1293b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal insert_block : llcontext -> string -> llbasicblock -> llbasicblock 129446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 12950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1296dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1297dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1298dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_parent : llbasicblock -> llvalue = "LLVMGetBasicBlockParent" 1299dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 13004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 13014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 13024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 13034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 13044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_begin : llvalue -> (llvalue, llbasicblock) llpos 13054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_begin" 13064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 13084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 13094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 13104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 13114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_succ" 13124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 13144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 13154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 13164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 13184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 13194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 13204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 13224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 13234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 13244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 13254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 13264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_end" 13274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_pred gv] returns the function list position preceding [After gv]. 13294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 13304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 13314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_pred" 13324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 13344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 13354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 13364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 13384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 13394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 13404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 134246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 13430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 13450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 13463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 134746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 13480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 135046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 135146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1352cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1353dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1354dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1355dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1356dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1357dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal instr_parent : llvalue -> llbasicblock = "LLVMGetInstructionParent" 1358dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1359033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1360033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1361033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1362033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1363033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1364033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_begin" 1365033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1366033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1367033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1368033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1369033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_succ" 1370033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1371033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1372033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1373033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1374033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1375033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1376033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1377033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1378033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1379033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1380033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1381033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1382033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1383033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1384033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_end" 1385033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1386033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1387033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1388033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1389033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_pred" 1390033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1391033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1392033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1393033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1394033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1395dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 13963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 13973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 13993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 14003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 14013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1402cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal instruction_call_conv: llvalue -> int 1403cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_instruction_call_conv" 1404cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1405dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1406dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1407dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1408dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 14093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1410cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal set_instruction_call_conv: int -> llvalue -> unit 1411cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_set_instruction_call_conv" 1412cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1413e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_instruction_param_attr ci i a] adds attribute [a] to the [i]th 1414e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands parameter of the call or invoke instruction [ci]. [i]=0 denotes the return 1415e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands value. *) 1416e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1417e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_instruction_param_attr" 1418e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1419e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_instruction_param_attr ci i a] removes attribute [a] from the 1420e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [i]th parameter of the call or invoke instruction [ci]. [i]=0 denotes the 1421e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands return value. *) 1422e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1423e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_instruction_param_attr" 1424e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 142507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** {Operations on call instructions (only)} *) 142607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 142707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [is_tail_call ci] is [true] if the call instruction [ci] is flagged as 142807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen eligible for tail call optimization, [false] otherwise. 142907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::isTailCall]. *) 143007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal is_tail_call : llvalue -> bool = "llvm_is_tail_call" 143107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 143207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [set_tail_call tc ci] flags the call instruction [ci] as eligible for tail 143307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen call optimization if [tc] is [true], clears otherwise. 143407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::setTailCall]. *) 143507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal set_tail_call : bool -> llvalue -> unit = "llvm_set_tail_call" 14363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 14380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 14403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 14412618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 14422618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 14430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 14453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 14462618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 14472618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 144846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 14510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14525371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [builder context] creates an instruction builder with no position in 14535371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. It is invalid to use this builder until its position 14545371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar is set with {!position_before} or {!position_at_end}. See the constructor 14555371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for [llvm::LLVMBuilder]. *) 14565371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal builder : llcontext -> llbuilder = "llvm_builder" 1457033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1458033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1459033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 14605371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at : llcontext -> (llbasicblock, llvalue) llpos -> llbuilder 1461a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 14620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 14633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 14645371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_before : llcontext -> llvalue -> llbuilder 14650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 14673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 14685371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at_end : llcontext -> llbasicblock -> llbuilder 1469033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1470033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1471033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1472033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1473033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1474033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_position_builder" 14750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 14773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1478033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 14790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 14813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1482033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 148346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1484dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1485dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1486dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1487dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1488dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal insertion_block : llbuilder -> llbasicblock = "llvm_insertion_block" 1489dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14905c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar(** [insert_into_builder i name b] inserts the specified instruction [i] at the 14915c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar position specified by the instruction builder [b]. 14925c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar See the method [llvm::LLVMBuilder::Insert]. *) 14935c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarexternal insert_into_builder : llvalue -> string -> llbuilder -> unit 14945c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar = "llvm_insert_into_builder" 14955c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 149646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Metadata} *) 149746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 149846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_current_debug_location b md] sets the current debug location [md] in 149946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar the builder [b]. 150046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetDebugLocation]. *) 150146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal set_current_debug_location : llbuilder -> llvalue -> unit 150246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_set_current_debug_location" 150346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 150446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_current_debug_location b] clears the current debug location in the 150546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar builder [b]. *) 150646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal clear_current_debug_location : llbuilder -> unit 150746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_clear_current_debug_location" 150846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 150946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [current_debug_location b] returns the current debug location, or None 151046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar if none is currently set. 151146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::GetDebugLocation]. *) 151246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal current_debug_location : llbuilder -> llvalue option 151346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_current_debug_location" 151446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 151546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_inst_debug_location b i] sets the current debug location of the builder 151646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [b] to the instruction [i]. 151746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetInstDebugLocation]. *) 151846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaarexternal set_inst_debug_location : llbuilder -> llvalue -> unit 151946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar = "llvm_set_inst_debug_location" 15203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 15220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 15240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 15250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 152746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 15280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 15300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 15310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 153346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 15340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1535e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_aggregate_ret vs b] creates a 1536e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [ret {...} { %v1, %v2, ... } ] 1537e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1538e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateAggregateRet]. *) 1539e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1540e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_aggregate_ret" 1541e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 15420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 15431430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %bb] 15440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 154646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 15470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 15491430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %cond, %tbb, %fbb] 15500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 155246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 155346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 15540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 155521491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [build_switch case elsebb count b] creates an empty 15560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 155721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen instruction at the position specified by the instruction builder [b] with 155821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen space reserved for [count] cases. 15593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 156046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 156146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 15620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 156321491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [add_case sw onval bb] causes switch instruction [sw] to branch to [bb] 156421491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen when its input matches the constant [onval]. 156521491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen See the method [llvm::SwitchInst::addCase]. **) 156621491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksenexternal add_case : llvalue -> llvalue -> llbasicblock -> unit 156721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen = "llvm_add_case" 156821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen 1569c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [build_indirect_br addr count b] creates a 1570c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar [indirectbr %addr] 1571c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar instruction at the position specified by the instruction builder [b] with 1572c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar space reserved for [count] destinations. 1573c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::LLVMBuilder::CreateIndirectBr]. *) 1574c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal build_indirect_br : llvalue -> int -> llbuilder -> llvalue 1575c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar = "llvm_build_indirect_br" 1576c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 1577c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [add_destination br bb] adds the basic block [bb] as a possible branch 1578c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar location for the indirectbr instruction [br]. 1579c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::IndirectBrInst::addDestination]. **) 1580c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaarexternal add_destination : llvalue -> llbasicblock -> unit 1581c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar = "llvm_add_destination" 1582c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 15830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 15840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 15850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 158746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 158846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 158946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 15900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an 15920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unwind] 15930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 159546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind" 15960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 15980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 15990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 160146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 160246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 16033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 16043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 16050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 16070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 16080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 161046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 161146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 16120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16131430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar(** [build_nsw_add x y name b] creates a 1614e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = nsw add %x, %y] 1615e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1616e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWAdd]. *) 1617e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1618e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_nsw_add" 1619e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 162019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_add x y name b] creates a 162119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw add %x, %y] 162219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 162319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWAdd]. *) 162419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 162519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_add" 162619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1627e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fadd x y name b] creates a 1628e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fadd %x, %y] 1629e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1630e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFAdd]. *) 1631e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1632e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fadd" 1633e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 16350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 16360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 163846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 163946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 16400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 164119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_sub x y name b] creates a 164219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub %x, %y] 164319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 164419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWSub]. *) 164519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 164619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_sub" 164719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 164819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_sub x y name b] creates a 164919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub %x, %y] 165019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 165119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWSub]. *) 165219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 165319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_sub" 165419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1655e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fsub x y name b] creates a 1656e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fsub %x, %y] 1657e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1658e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFSub]. *) 1659e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1660e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fsub" 1661e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 16630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 16640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 166646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 166746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 16680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 166919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_mul x y name b] creates a 167019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw mul %x, %y] 167119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 167219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWMul]. *) 167319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 167419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_mul" 167519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 167619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_mul x y name b] creates a 167719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw mul %x, %y] 167819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 167919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWMul]. *) 168019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 168119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_mul" 168219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1683e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fmul x y name b] creates a 1684e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fmul %x, %y] 1685e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1686e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFMul]. *) 1687e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1688e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fmul" 1689e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 16910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 16920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 169446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 169546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 16960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 16980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 16990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 170146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 170246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 17030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1704e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_exact_sdiv x y name b] creates a 1705e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = exact sdiv %x, %y] 1706e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1707e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExactSDiv]. *) 1708e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1709e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_exact_sdiv" 1710e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 17110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 17120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 17130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 171546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 171646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 17170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 17190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 17200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 172246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 172346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 17240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 17260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 17270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 172946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 173046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 17310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 17330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 17340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 173646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 173746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 17380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 17400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 17410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 174346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 174446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 17450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 17470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 17480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 175046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 175146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 17520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 17540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 17550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 175746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 175846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 17590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 17610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 17620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 176446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 176546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 17660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 17680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 17690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 177146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 177246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 17730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 17750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 17760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 177846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 177946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 17800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 17820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 17830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 17853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 178646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 178746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 17880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 178919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_neg x name b] creates a 179019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub 0, %x] 179119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 179219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 179319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 179419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_neg : llvalue -> string -> llbuilder -> llvalue 179519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_neg" 179619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 179719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_neg x name b] creates a 179819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub 0, %x] 179919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 180019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 180119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 180219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_neg : llvalue -> string -> llbuilder -> llvalue 180319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_neg" 180419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 180519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_fneg x name b] creates a 180619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = fsub 0, %x] 180719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 180819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 180919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateFNeg]. *) 181019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_fneg : llvalue -> string -> llbuilder -> llvalue 181119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_fneg" 181219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 18130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 18140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 18150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 18173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 181846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 181946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 182046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 18213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 18230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 18250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 18260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 182846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 182946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 18300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 18320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 18330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 183546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 183646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 18370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 18390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 18400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 184246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 184346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 18440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 18460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 18470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 184946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 185046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 18510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1852632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 1853e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, indices...] 18540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 185646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 185746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 185846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1859e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_in_bounds_gep p indices name b] creates a 1860e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = gelementptr inbounds %p, indices...] 1861e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1862e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *) 1863e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder -> 1864e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_in_bounds_gep" 1865e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1866e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_struct_gep p idx name b] creates a 1867e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, 0, idx] 1868e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1869e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *) 1870e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_struct_gep : llvalue -> int -> string -> llbuilder -> 1871e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_struct_gep" 1872e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1873e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_string str name b] creates a series of instructions that adds 1874e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar a global string at the position specified by the instruction builder [b]. 1875e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalString]. *) 1876e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_string : string -> string -> llbuilder -> llvalue 1877e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_string" 1878e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1879e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_stringptr str name b] creates a series of instructions that 1880e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar adds a global string pointer at the position specified by the instruction 18815371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar builder [b]. 1882e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *) 1883e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_stringptr : string -> string -> llbuilder -> llvalue 1884e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_stringptr" 1885e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 18863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 18880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 18900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 18910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 189346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 189446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 18950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 18970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 18980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 190046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 190146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 19020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 19040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 19050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 190746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 190846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 19090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 19110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 19120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 191446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 191546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 19160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 19180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 19190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 192146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 192246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 19230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 19250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 19260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 192846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 192946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 19300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 19320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 19330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 193546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 193646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 19370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 19390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 19400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 194246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 194346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 19440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 19460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 19470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 194946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 195046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 19510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 19530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 19540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 195646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 195746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 19580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 19600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 19610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 196346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 196446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 19650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 19670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 19680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1969e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateBitCast]. *) 197046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 197146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 197246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1973e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast 1974e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1975e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1976e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1977e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_zext_or_bitcast" 1978e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1979e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast 1980e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1981e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *) 1982e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1983e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_sext_or_bitcast" 1984e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1985e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast 1986e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1987e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1988e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1989e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_trunc_or_bitcast" 1990e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1991e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int 1992e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1993e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePointerCast]. *) 1994e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 1995e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_pointercast" 1996e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1997e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_intcast v ty name b] creates a zext, bitcast, or trunc 1998e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1999e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIntCast]. *) 2000e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2001e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_intcast" 2002e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2003e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc 2004e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2005e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFPCast]. *) 2006e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2007e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fpcast" 2008e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 20093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 20103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 20110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 20130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 20140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 2016404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 201746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 20180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 20200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 20210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 2023404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 202446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 202546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 20263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 20273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 20280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 20300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 20310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 2032a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 20333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 20342618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 20352618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 20360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 20380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 20390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 204146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 204246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 20430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 20450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 20460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 204846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 204946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 20500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 20520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 20530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 205546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 205646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 20570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 20590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 20600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 206246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 206346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 20640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 20660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 20670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 206946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 207046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 20710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 20730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 20740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 207646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 207746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 20781ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2079e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg idx name b] creates a 2080e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = extractvalue %agg, %idx] 2081e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2082e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExtractValue]. *) 2083e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 2084e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_extractvalue" 2085e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2086e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg val idx name b] creates a 2087e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = insertvalue %agg, %val, %idx] 2088e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2089e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInsertValue]. *) 2090e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 2091e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_insertvalue" 2092e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2093e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_null val name b] creates a 2094e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp eq %val, null] 2095e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2096e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNull]. *) 2097e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_null : llvalue -> string -> llbuilder -> llvalue 2098e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_null" 2099e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2100e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_not_null val name b] creates a 2101e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp ne %val, null] 2102e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2103e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNotNull]. *) 2104e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_not_null : llvalue -> string -> llbuilder -> llvalue 2105e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_not_null" 2106e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2107e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure 2108e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar the difference between two pointer values at the position specified by the 21095371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar instruction builder [b]. 2110e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePtrDiff]. *) 2111e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 2112e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_ptrdiff" 21131ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 21143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Module providers} *) 21151ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2116da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule ModuleProvider : sig 2117da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [create_module_provider m] encapsulates [m] in a module provider and takes 21183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen ownership of the module. See the constructor 21193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::ExistingModuleProvider::ExistingModuleProvider]. *) 2120da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external create : llmodule -> llmoduleprovider 2121da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen = "LLVMCreateModuleProviderForExistingModule" 21223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2123da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [dispose_module_provider mp] destroys the module provider [mp] as well as 21243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the contained module. *) 2125da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider" 2126da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2127da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 21283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 21293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 2130da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2131da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 21323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 21333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 21343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 2135da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" 2136da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2137da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [stdin ()] is the memory buffer containing the contents of standard input. 21383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 2139da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" 2140da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 21413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 2142da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" 2143da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2144d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2145d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2146d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 2147d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2148d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 2149d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 2150d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 2151d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 2152d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2153d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 2154d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 2155d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 2156d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 2157d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create : unit -> [ `Module ] t = "llvm_passmanager_create" 2158d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2159d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create_function mp] constructs a new function-by-function 2160d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen pass pipeline over the module provider [mp]. It does not take ownership of 2161d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen [mp]. This type of pipeline is suitable for code generation and JIT 2162d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen compilation tasks. 2163d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 2164d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create_function : llmoduleprovider -> [ `Function ] t 2165d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "LLVMCreateFunctionPassManager" 2166d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2167d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 2168d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 2169d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 2170d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 2171d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_module : llmodule -> [ `Module ] t -> bool 2172d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_module" 2173d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2174d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 2175d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 2176d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 2177d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 2178d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize" 2179d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2180d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 2181d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 2182d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 2183d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 2184d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_function : llvalue -> [ `Function ] t -> bool 2185d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_function" 2186d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2187d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 2188d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 2189d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 2190d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 2191d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize" 2192d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2193d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 2194d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module provider. 2195d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 2196d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external dispose : [< any ] t -> unit = "llvm_passmanager_dispose" 2197d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 2198