llvm.mli revision 19f047f5f6c44d1cd5681f9314b3ff5e7bae122d
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 2245371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 2268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2275371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_module context id] creates a module with the supplied module ID in 2285371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. Modules are not garbage collected; it is mandatory 2295371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar to call {!dispose_module} to free memory. See the constructor 2305371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::Module::Module]. *) 2315371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal create_module : llcontext -> string -> llmodule = "llvm_create_module" 2328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 2340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 2350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 2363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 2378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 2388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 239a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 2403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 241a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal target_triple: llmodule -> string 242a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_target_triple" 243a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 244a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 2453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 246a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_target_triple: string -> llmodule -> unit 247a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_target_triple" 248a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 249a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 250a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 2513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 252a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal data_layout: llmodule -> string 253a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_data_layout" 254a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 255a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 2563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 257a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_data_layout: string -> llmodule -> unit 258a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_data_layout" 259a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 2600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table. 2610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Returns [true] if successful. If such a name already exists, then no entry 2620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen is added and [false] is returned. See the [llvm::Module::addTypeName] 2633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method. *) 26446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool 26546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_add_type_name" 26646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol 2680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen table. *) 26946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit 27046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_delete_type_name" 2718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2723c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 2733c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 2743c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksenexternal dump_module : llmodule -> unit = "llvm_dump_module" 2753c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 2768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 2780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 2803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 281404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type" 2820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2835371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [type_context ty] returns the {!llcontext} corresponding to the type [ty]. 2845371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar See the method [llvm::Type::getContext]. *) 2855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal type_context : lltype -> llcontext = "llvm_type_context" 2865371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 2873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 2888ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 2898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 2910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 292b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i1_type c] returns an integer type of bitwidth 1 in the context [c]. See 293b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int1Ty]. *) 294b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i1_type : llcontext -> lltype = "llvm_i1_type" 2950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 296b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i8_type c] returns an integer type of bitwidth 8 in the context [c]. See 297b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int8Ty]. *) 298b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i8_type : llcontext -> lltype = "llvm_i8_type" 2990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 300b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i16_type c] returns an integer type of bitwidth 16 in the context [c]. See 301b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int16Ty]. *) 302b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i16_type : llcontext -> lltype = "llvm_i16_type" 3030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 304b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i32_type c] returns an integer type of bitwidth 32 in the context [c]. See 305b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int32Ty]. *) 306b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i32_type : llcontext -> lltype = "llvm_i32_type" 3070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 308b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i64_type c] returns an integer type of bitwidth 64 in the context [c]. See 309b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int64Ty]. *) 310b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal i64_type : llcontext -> lltype = "llvm_i64_type" 3110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 312b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_type c n] returns an integer type of bitwidth [n] in the context 313b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See the method [llvm::IntegerType::get]. *) 314b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal integer_type : llcontext -> int -> lltype = "llvm_integer_type" 3150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 316b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_bitwidth c ty] returns the number of bits in the integer type [ty] 317b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar in the context [c]. See the method [llvm::IntegerType::getBitWidth]. *) 3188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 3198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 3223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 323b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [float_type c] returns the IEEE 32-bit floating point type in the context 324b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FloatTy]. *) 325b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal float_type : llcontext -> lltype = "llvm_float_type" 3260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 327b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [double_type c] returns the IEEE 64-bit floating point type in the context 328b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::DoubleTy]. *) 329b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal double_type : llcontext -> lltype = "llvm_double_type" 3300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 331b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [x86fp80_type c] returns the x87 80-bit floating point type in the context 332b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::X86_FP80Ty]. *) 333b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal x86fp80_type : llcontext -> lltype = "llvm_x86fp80_type" 3340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 335b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [fp128_type c] returns the IEEE 128-bit floating point type in the context 336b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FP128Ty]. *) 337b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal fp128_type : llcontext -> lltype = "llvm_fp128_type" 3380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 339b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [ppc_fp128_type c] returns the PowerPC 128-bit floating point type in the 340b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. See [llvm::Type::PPC_FP128Ty]. *) 341b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal ppc_fp128_type : llcontext -> lltype = "llvm_ppc_fp128_type" 3428ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 3450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 3470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 3483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 349957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 3500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like 3520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 3530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 3543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 355957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 356957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 3570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 3593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 3608ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 3610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 3633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 364d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 3650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 3673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 3688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 3698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 3720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3735371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [struct_type context tys] returns the structure type in the context 3745371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [context] containing in the types in the array [tys]. See the method 3755371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 3765371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal struct_type : llcontext -> lltype array -> lltype 3775371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_struct_type" 3780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3795371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [packed_struct_type context ys] returns the packed structure type in the 3805371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar context [context] containing in the types in the array [tys]. See the method 3815371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 3825371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal packed_struct_type : llcontext -> lltype array -> lltype 3835371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_packed_struct_type" 3840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3851940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [struct_element_types sty] returns the constituent types of the struct type 3861940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [sty]. See the method [llvm::StructType::getElementType]. *) 3871940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal struct_element_types : lltype -> lltype array 3881940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar = "llvm_struct_element_types" 3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 3913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 3928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 3938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3951940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** {7 Operations on union types} *) 3961940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 3971940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [union_type context tys] returns the union type in the context [context] 3981940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar containing the types in the array [tys]. See the method 3991940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [llvm::UnionType::get] *) 4001940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal union_type : llcontext -> lltype array -> lltype = "llvm_union_type" 4011940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4021940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [union_element_types uty] returns the constituent types of the union type 4031940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [uty]. See the method [llvm::UnionType::getElementType]. *) 4041940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal union_element_types : lltype -> lltype array 4051940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar = "llvm_union_element_types" 4061940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4071940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 4083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 4090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 4113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 412957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 4130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 41557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 4163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 41757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 41857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 41957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 42057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 4213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 42257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 42357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 4240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 4263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 427957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 4288ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 4303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 431d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 4320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 4343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 4358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 4360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 43757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 4383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 43957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 44057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 4410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 4423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 4438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 4448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 4470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 448b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [opaque_type c] creates a new opaque type distinct from any other in the 449b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. Opaque types are useful for building recursive types in 450b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar combination with {!refine_type}. See [llvm::OpaqueType::get]. *) 451b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal opaque_type : llcontext -> lltype = "llvm_opaque_type" 4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 453b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [void_type c] creates a type of a function which does not return any 454b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value in the context [c]. See [llvm::Type::VoidTy]. *) 455b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal void_type : llcontext -> lltype = "llvm_void_type" 4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 457b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [label_type c] creates a type of a basic block in the context [c]. See 458b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::LabelTy]. *) 459b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal label_type : llcontext -> lltype = "llvm_label_type" 4608ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on type handles} *) 4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later 4643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen refined as a result of a call to {!refine_type}, the handle will be updated; 4650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen any bare [lltype] references will become invalid. 4663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the class [llvm::PATypeHolder]. *) 4671cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" 4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh]. 4703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PATypeHolder::get()]. *) 4711cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" 4720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the 4743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen concrete type [ty] in all users. Warning: This may invalidate {!lltype} 4753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values! Use {!lltypehandle} to manipulate potentially abstract types. See 4763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the method [llvm::Type::refineAbstractType]. *) 4771cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type" 4781cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 4798ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 4810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 4833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 4848ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 4850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 4870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 4893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 4908ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 4933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 4948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 4950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 4973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 49888cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 4998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 5043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 505344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 5060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 5083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 509e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 5100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 5123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 513e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 5163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 517e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 5180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 5203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 5218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 5220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 5243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 525344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 5268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 5290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 5313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 532e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 5353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 536e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 537e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 53945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_int_of_string ty s r] returns the integer constant of type [ty] and 54045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar * value [s], with the radix [r]. See the method [llvm::ConstantInt::get]. *) 54145d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_int_of_string : lltype -> string -> int -> llvalue 54245d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_int_of_string" 54345d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 5440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 5452b526fec6a03be58f56e885af6b53c197973e573Erick Tryzelaar value [n]. See the method [llvm::ConstantFP::get]. *) 546e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 5478ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 54845d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_float_of_string ty s] returns the floating point constant of type 54945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar [ty] and value [n]. See the method [llvm::ConstantFP::get]. *) 55045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_float_of_string : lltype -> string -> llvalue 55145d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_float_of_string" 55245d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 5533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 5550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 556b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_string c s] returns the constant [i8] array with the values of the 557b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] in the context [c]. The array is not 558b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar null-terminated (but see {!const_stringz}). This value can in turn be used 559b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar as the initializer for a global variable. See the method 560b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::ConstantArray::get]. *) 561b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_string : llcontext -> string -> llvalue = "llvm_const_string" 5620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 563b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_stringz c s] returns the constant [i8] array with the values of the 564b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] and a null terminator in the context [c]. This 565b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value can in turn be used as the initializer for a global variable. 5663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 567b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal const_stringz : llcontext -> string -> llvalue = "llvm_const_stringz" 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 5700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 5723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 573e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 5740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5755371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_struct context elts] returns the structured constant of type 5765371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [struct_type (Array.map type_of elts)] and containing the values [elts] 5775371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar in the context [context]. This value can in turn be used as the initializer 5785371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for a global variable. See the method [llvm::ConstantStruct::get]. *) 5795371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_struct : llcontext -> llvalue array -> llvalue 5805371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar = "llvm_const_struct" 5815371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 5825371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_packed_struct context elts] returns the structured constant of 5835371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar type {!packed_struct_type} [(Array.map type_of elts)] and containing the 5845371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar values [elts] in the context [context]. This value can in turn be used as 5855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the initializer for a global variable. See the method 5865371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::ConstantStruct::get]. *) 5875371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal const_packed_struct : llcontext -> llvalue array -> llvalue 588e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 5890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 5910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 5923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 593e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 5948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5951940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [const_union ty v] returns the union constant of type [union_type tys] and 5961940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar containing the value [v]. See the method [llvm::ConstantUnion::get]. *) 5971940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaarexternal const_union : lltype -> llvalue -> llvalue = "LLVMConstUnion" 5981940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar 5993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 6003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 6010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 602ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands(** [align_of ty] returns the alignof constant for the type [ty]. This is 603ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands equivalent to [const_ptrtoint (const_gep (const_null (pointer_type {i8,ty})) 604ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 0) (const_int i32_type 1)) i32_type], but considerably 605ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands more readable. See the method [llvm::ConstantExpr::getAlignOf]. *) 606ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sandsexternal align_of : lltype -> llvalue = "LLVMAlignOf" 607ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 6080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 6090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 610ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 1)) i64_type], but considerably more readable. 6113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 612e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 6153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 6164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 6170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 61819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_neg c] returns the arithmetic negation of the constant [c] with 61919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the negation overflows. 62019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWNeg]. *) 62119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_neg : llvalue -> llvalue = "LLVMConstNSWNeg" 62219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 62319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_neg c] returns the arithmetic negation of the constant [c] with 62419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the negation overflows. 62519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNUWNeg]. *) 62619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_neg : llvalue -> llvalue = "LLVMConstNUWNeg" 62719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6281b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fneg c] returns the arithmetic negation of the constant float [c]. 6291b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFNeg]. *) 6301b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fneg : llvalue -> llvalue = "LLVMConstFNeg" 6311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 6333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 6344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 6350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 6373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 6384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6401b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_nsw_add c1 c2] returns the constant sum of two constants with no 6411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed wrapping. The result is undefined if the sum overflows. 6421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 6431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_nsw_add : llvalue -> llvalue -> llvalue = "LLVMConstNSWAdd" 6441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 64519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_add c1 c2] returns the constant sum of two constants with no 64619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unsigned wrapping. The result is undefined if the sum overflows. 64719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 64819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_add : llvalue -> llvalue -> llvalue = "LLVMConstNUWAdd" 64919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6501b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fadd c1 c2] returns the constant sum of two constant floats. 6511b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFAdd]. *) 6521b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fadd : llvalue -> llvalue -> llvalue = "LLVMConstFAdd" 6531b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 6553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 6564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 6570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 65819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_sub c1 c2] returns the constant difference of two constants with 65919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 66019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 66119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNSWSub" 66219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 66319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_sub c1 c2] returns the constant difference of two constants with 66419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 66519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 66619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_sub : llvalue -> llvalue -> llvalue = "LLVMConstNUWSub" 66719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6681b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fsub c1 c2] returns the constant difference, [c1 - c2], of two 6691b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant floats. See the method [llvm::ConstantExpr::getFSub]. *) 6701b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fsub : llvalue -> llvalue -> llvalue = "LLVMConstFSub" 6711b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 6733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 6744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 6750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 67619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_mul c1 c2] returns the constant product of two constants with 67719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 67819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 67919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nsw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNSWMul" 68019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 68119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_mul c1 c2] returns the constant product of two constants with 68219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 68319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 68419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal const_nuw_mul : llvalue -> llvalue -> llvalue = "LLVMConstNUWMul" 68519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 6861b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fmul c1 c2] returns the constant product of two constants floats. 6871b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFMul]. *) 6881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fmul : llvalue -> llvalue -> llvalue = "LLVMConstFMul" 6891b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 6910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 6923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 6934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 6940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 6960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 6971b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSDiv]. *) 6984647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 6990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7001b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_exact_sdiv c1 c2] returns the constant quotient [c1 / c2] of two 7011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed integer constants. The result is undefined if the result is rounded 7025371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar or overflows. See the method [llvm::ConstantExpr::getExactSDiv]. *) 7031b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_exact_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstExactSDiv" 7041b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 7060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 7073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 7084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7101b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_urem c1 c2] returns the constant remainder [c1 MOD c2] of two 7110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 7123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 7134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 7140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7151b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_srem c1 c2] returns the constant remainder [c1 MOD c2] of two 7160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 7173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 7184647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 7190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 7210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 7223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 7234647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 7260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 7284647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 7290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 7310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 7334647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 7360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 7373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 7384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 7390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 7410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 7423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 743404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 7444647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 7450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 7470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 7483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 749404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 7504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 7510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 7530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 7543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 7554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 7593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 7604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 7610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 7630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 7643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 7654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 7660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 7680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 7693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 7704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 7710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7721b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_in_bounds_gep pc indices] returns the constant [getElementPtr] of [p1] 7731b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar with the constant integers indices from the array [indices]. 7741b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getInBoundsGetElementPtr]. *) 7751b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_in_bounds_gep : llvalue -> llvalue array -> llvalue 7761b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_in_bounds_gep" 7771b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 7790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 7803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 7814647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 7840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 7853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 7864647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 7870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 7890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 7903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 7914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 7920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 7940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 7953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 7964647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 7970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 7990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 8003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 8014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 8020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 8053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 8064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 8070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 8090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 8103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 8114647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 8120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 8140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 8153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 8164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 8203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 8214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 8240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 8253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 8264647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 8270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 8290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 8303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 8314647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 8320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 8340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 8353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 8364647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_zext_or_bitcast c ty] returns a constant zext or bitwise cast 8391b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8401b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getZExtOrBitCast]. *) 8411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_zext_or_bitcast : llvalue -> lltype -> llvalue 8421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstZExtOrBitCast" 8431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_sext_or_bitcast c ty] returns a constant sext or bitwise cast 8451b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8461b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSExtOrBitCast]. *) 8471b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_sext_or_bitcast : llvalue -> lltype -> llvalue 8481b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstSExtOrBitCast" 8491b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8501b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_trunc_or_bitcast c ty] returns a constant trunc or bitwise cast 8511b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 8521b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getTruncOrBitCast]. *) 8531b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_trunc_or_bitcast : llvalue -> lltype -> llvalue 8541b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstTruncOrBitCast" 8551b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8561b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_pointercast c ty] returns a constant bitcast or a pointer-to-int 8571b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar cast conversion of constant [c] to type [ty] of equal size. 8581b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getPointerCast]. *) 8591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_pointercast : llvalue -> lltype -> llvalue 8601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstPointerCast" 8611b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8621b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_intcast c ty] returns a constant zext, bitcast, or trunc for integer 8631b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar -> integer casts of constant [c] to type [ty]. 8641b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getIntCast]. *) 8651b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_intcast : llvalue -> lltype -> llvalue 8661b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstIntCast" 8671b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8681b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> 8695371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar fp casts of constant [c] to type [ty]. 8701b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFPCast]. *) 8711b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fpcast : llvalue -> lltype -> llvalue 8721b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstFPCast" 8731b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 8750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 8763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 8774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 8784647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 8790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 8810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 8820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 8833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 8844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 8854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 8860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 8880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 8890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 8900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 8910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 8923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 8934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 8944647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 8950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 8970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the LLVM Language Reference for details on the [sufflevector] 8980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 8993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 9004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 9014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 9024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 9031b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_extractvalue agg idxs] returns the constant [idxs]th value of 9041b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant aggregate [agg]. Each [idxs] must be less than the size of the 9051b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar aggregate. See the method [llvm::ConstantExpr::getExtractValue]. *) 9061b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_extractvalue : llvalue -> int array -> llvalue 9071b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_extractvalue" 9081b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9091b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_insertvalue agg val idxs] inserts the value [val] in the specified 9101b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar indexs [idxs] in the aggegate [agg]. Each [idxs] must be less than the size 9111b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar of the aggregate. See the method [llvm::ConstantExpr::getInsertValue]. *) 9121b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_insertvalue : llvalue -> llvalue -> int array -> llvalue 9131b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_insertvalue" 9141b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 9163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 9170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 918dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 919dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 920dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" 921dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 9220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 9243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 9258ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 9283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 929404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage" 9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 9323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 933404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" 9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 9363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 9378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 9380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 9403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 9418ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 9420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 9443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 945404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility" 9460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 9483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 949404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit 950404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen = "llvm_set_visibility" 9510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 9533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 9548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 9550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 9573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 9588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 9598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 9603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 9613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 9620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 9640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a global variable already exists, 9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing global differs, then a bitcast 9663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 9678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 9688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 9710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer [init] in module [m]. If the named global already exists, it is 9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. 9733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 9748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 9758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 9780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 9793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 9806d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 9816d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 9820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 9843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 9858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 9884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 9894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 9904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 9914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_begin : llmodule -> (llmodule, llvalue) llpos 9924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_begin" 9934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 9954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 9964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 9974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_succ : llvalue -> (llmodule, llvalue) llpos 9984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_succ" 9994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 10014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 10024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 10034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 10054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 10064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 10074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 10094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 10104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 10114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 10124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_end : llmodule -> (llmodule, llvalue) llrev_pos 10134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_end" 10144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 10164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 10174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 10184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_pred : llvalue -> (llmodule, llvalue) llrev_pos 10194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_pred" 10204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 10224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 10234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 10244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 10264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 10274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 10284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 10300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 10313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 10320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 10330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 10350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 10363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 10370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 10380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen = "llvm_set_global_constant" 10390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 10413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 104246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 10430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 10450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 10463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 10478ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 10480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 10500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 10513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 10528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 10530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 10550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 10563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 10578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 10580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 10600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 10613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 10628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 10638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 10643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 10653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 10680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 10690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 10703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 107146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 107246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 10730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 10773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 107846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 107946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 10800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 10833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 10846d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 10856d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 10883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 108946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 10900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 10924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 10934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 10944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 10954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_begin : llmodule -> (llmodule, llvalue) llpos 10964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_begin" 10974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 10994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 11004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 11014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_succ : llvalue -> (llmodule, llvalue) llpos 11024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_succ" 11034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 11054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 11064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 11074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 11094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 11104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 11114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 11134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 11144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 11154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 11164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_end : llmodule -> (llmodule, llvalue) llrev_pos 11174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_end" 11184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 11204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 11214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_pred : llvalue -> (llmodule, llvalue) llrev_pos 11224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_pred" 11234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 11254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 11264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 11274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 11294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 11304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 11314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 11333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 113446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 11350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 11373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 113846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 11410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 11423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 114346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 114446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 114546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11465eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [gc f] returns [Some name] if the function [f] has a garbage 114780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 11485eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen See the method [llvm::Function::getGC]. *) 11495eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal gc : llvalue -> string option = "llvm_gc" 115080a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 11515eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [set_gc gc f] sets the collection algorithm for the function [f] to 11525eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen [gc]. See the method [llvm::Function::setGC]. *) 11535eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal set_gc : string option -> llvalue -> unit = "llvm_set_gc" 115480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1155e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_function_attr f a] adds attribute [a] to the return type of function 1156e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [f]. *) 1157e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_function_attr : llvalue -> Attribute.t -> unit 1158e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_function_attr" 1159e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1160e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_function_attr f a] removes attribute [a] from the return type of 1161e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands function [f]. *) 1162e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_function_attr : llvalue -> Attribute.t -> unit 1163e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_function_attr" 11643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1165dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 1166dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1167dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 1168dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1169dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 1170dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1171dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 1172dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1173dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 1174dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1175dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 1176dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 1177dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param_parent : llvalue -> llvalue = "LLVMGetParamParent" 1178dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 11804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 11814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 11824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 11834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_begin : llvalue -> (llvalue, llvalue) llpos = "llvm_param_begin" 11844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 11864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 11874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 11884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_succ : llvalue -> (llvalue, llvalue) llpos = "llvm_param_succ" 11894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 11914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 11924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 11934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 11954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 11964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 11974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 11994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 12004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 12014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 12024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_end : llvalue -> (llvalue, llvalue) llrev_pos = "llvm_param_end" 12034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 12054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 12064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_pred : llvalue -> (llvalue, llvalue) llrev_pos 12074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_param_pred" 12084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 12104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 12114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 12124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 12144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 12154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 12164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1217e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_param p a] adds attribute [a] to parameter [p]. *) 1218e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_param_attr : llvalue -> Attribute.t -> unit = "llvm_add_param_attr" 1219e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1220e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_param_attr p a] removes attribute [a] from parameter [p]. *) 1221e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_param_attr : llvalue -> Attribute.t -> unit 1222e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_param_attr" 1223e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1224e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [set_param_alignment p a] set the alignment of parameter [p] to [a]. *) 1225e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal set_param_alignment : llvalue -> int -> unit 1226e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_set_param_alignment" 1227dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 12290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 12313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 123246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 12330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 12353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 123646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 12370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 12393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 124046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 12410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1242b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [append_block c name f] creates a new basic block named [name] at the end of 1243b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar function [f] in the context [c]. 12443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1245b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal append_block : llcontext -> string -> llvalue -> llbasicblock 1246b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar = "llvm_append_block" 12470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1248b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [insert_block c name bb] creates a new basic block named [name] before the 1249b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar basic block [bb] in the context [c]. 12503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1251b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaarexternal insert_block : llcontext -> string -> llbasicblock -> llbasicblock 125246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 12530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1254dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1255dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1256dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_parent : llbasicblock -> llvalue = "LLVMGetBasicBlockParent" 1257dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 12594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 12604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 12614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 12624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_begin : llvalue -> (llvalue, llbasicblock) llpos 12634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_begin" 12644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 12664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 12674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 12684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 12694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_succ" 12704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 12724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 12734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 12744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 12764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 12774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 12784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 12804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 12814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 12824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 12834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 12844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_end" 12854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_pred gv] returns the function list position preceding [After gv]. 12874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 12884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 12894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_pred" 12904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 12924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 12934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 12944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 12964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 12974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 12984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 130046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 13010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 13030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 13043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 130546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 13060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 130846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 130946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1310cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1311dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1312dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1313dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1314dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1315dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal instr_parent : llvalue -> llbasicblock = "LLVMGetInstructionParent" 1316dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1317033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1318033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1319033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1320033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1321033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1322033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_begin" 1323033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1324033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1325033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1326033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1327033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_succ" 1328033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1329033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1330033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1331033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1332033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1333033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1334033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1335033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1336033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1337033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1338033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1339033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1340033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1341033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1342033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_end" 1343033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1344033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1345033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1346033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1347033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_pred" 1348033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1349033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1350033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1351033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1352033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1353dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 13543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 13553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 13573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 13583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 13593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1360cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal instruction_call_conv: llvalue -> int 1361cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_instruction_call_conv" 1362cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1363dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1364dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1365dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1366dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 13673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1368cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal set_instruction_call_conv: int -> llvalue -> unit 1369cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_set_instruction_call_conv" 1370cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1371e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_instruction_param_attr ci i a] adds attribute [a] to the [i]th 1372e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands parameter of the call or invoke instruction [ci]. [i]=0 denotes the return 1373e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands value. *) 1374e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1375e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_instruction_param_attr" 1376e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1377e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_instruction_param_attr ci i a] removes attribute [a] from the 1378e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [i]th parameter of the call or invoke instruction [ci]. [i]=0 denotes the 1379e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands return value. *) 1380e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1381e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_instruction_param_attr" 1382e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 138307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** {Operations on call instructions (only)} *) 138407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 138507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [is_tail_call ci] is [true] if the call instruction [ci] is flagged as 138607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen eligible for tail call optimization, [false] otherwise. 138707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::isTailCall]. *) 138807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal is_tail_call : llvalue -> bool = "llvm_is_tail_call" 138907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 139007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [set_tail_call tc ci] flags the call instruction [ci] as eligible for tail 139107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen call optimization if [tc] is [true], clears otherwise. 139207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::setTailCall]. *) 139307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal set_tail_call : bool -> llvalue -> unit = "llvm_set_tail_call" 13943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 13960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 13983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 13992618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 14002618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 14010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 14033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 14042618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 14052618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 140646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 14090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14105371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [builder context] creates an instruction builder with no position in 14115371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. It is invalid to use this builder until its position 14125371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar is set with {!position_before} or {!position_at_end}. See the constructor 14135371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for [llvm::LLVMBuilder]. *) 14145371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarexternal builder : llcontext -> llbuilder = "llvm_builder" 1415033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1416033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1417033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 14185371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at : llcontext -> (llbasicblock, llvalue) llpos -> llbuilder 1419a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 14200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 14213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 14225371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_before : llcontext -> llvalue -> llbuilder 14230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 14253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 14265371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at_end : llcontext -> llbasicblock -> llbuilder 1427033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1428033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1429033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1430033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1431033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1432033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_position_builder" 14330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 14353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1436033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 14370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 14393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1440033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 144146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1442dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1443dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1444dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1445dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1446dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal insertion_block : llbuilder -> llbasicblock = "llvm_insertion_block" 1447dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14485c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar(** [insert_into_builder i name b] inserts the specified instruction [i] at the 14495c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar position specified by the instruction builder [b]. 14505c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar See the method [llvm::LLVMBuilder::Insert]. *) 14515c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarexternal insert_into_builder : llvalue -> string -> llbuilder -> unit 14525c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar = "llvm_insert_into_builder" 14535c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 14543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 14560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 14580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 14590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 146146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 14620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 14640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 14650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 146746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 14680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1469e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_aggregate_ret vs b] creates a 1470e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [ret {...} { %v1, %v2, ... } ] 1471e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1472e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateAggregateRet]. *) 1473e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1474e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_aggregate_ret" 1475e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 14760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 14771430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %bb] 14780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 148046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 14810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 14831430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %cond, %tbb, %fbb] 14840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 148646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 148746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 14880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 148921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [build_switch case elsebb count b] creates an empty 14900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 149121491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen instruction at the position specified by the instruction builder [b] with 149221491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen space reserved for [count] cases. 14933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 149446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 149546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 14960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 149721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [add_case sw onval bb] causes switch instruction [sw] to branch to [bb] 149821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen when its input matches the constant [onval]. 149921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen See the method [llvm::SwitchInst::addCase]. **) 150021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksenexternal add_case : llvalue -> llvalue -> llbasicblock -> unit 150121491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen = "llvm_add_case" 150221491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen 15030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 15040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 15050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 150746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 150846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 150946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 15100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an 15120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unwind] 15130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 151546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind" 15160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 15180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 15190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 152146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 152246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 15250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 15270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 15280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 153046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 153146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 15320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15331430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar(** [build_nsw_add x y name b] creates a 1534e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = nsw add %x, %y] 1535e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1536e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWAdd]. *) 1537e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1538e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_nsw_add" 1539e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 154019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_add x y name b] creates a 154119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw add %x, %y] 154219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 154319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWAdd]. *) 154419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 154519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_add" 154619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1547e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fadd x y name b] creates a 1548e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fadd %x, %y] 1549e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1550e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFAdd]. *) 1551e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1552e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fadd" 1553e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 15540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 15550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 15560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 155846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 155946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 15600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 156119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_sub x y name b] creates a 156219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub %x, %y] 156319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 156419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWSub]. *) 156519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 156619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_sub" 156719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 156819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_sub x y name b] creates a 156919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub %x, %y] 157019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 157119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWSub]. *) 157219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 157319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_sub" 157419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1575e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fsub x y name b] creates a 1576e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fsub %x, %y] 1577e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1578e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFSub]. *) 1579e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1580e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fsub" 1581e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 15820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 15830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 15840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 158646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 158746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 15880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 158919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_mul x y name b] creates a 159019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw mul %x, %y] 159119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 159219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWMul]. *) 159319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 159419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_mul" 159519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 159619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_mul x y name b] creates a 159719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw mul %x, %y] 159819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 159919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWMul]. *) 160019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 160119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_mul" 160219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1603e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fmul x y name b] creates a 1604e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fmul %x, %y] 1605e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1606e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFMul]. *) 1607e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1608e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fmul" 1609e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 16110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 16120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 161446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 161546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 16160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 16180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 16190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 162146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 162246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 16230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1624e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_exact_sdiv x y name b] creates a 1625e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = exact sdiv %x, %y] 1626e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1627e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExactSDiv]. *) 1628e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1629e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_exact_sdiv" 1630e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 16320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 16330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 163546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 163646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 16370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 16390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 16400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 164246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 164346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 16440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 16460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 16470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 164946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 165046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 16510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 16530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 16540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 165646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 165746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 16580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 16600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 16610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 166346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 166446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 16650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 16670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 16680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 167046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 167146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 16720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 16740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 16750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 167746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 167846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 16790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 16810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 16820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 168446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 168546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 16860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 16880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 16890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 169146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 169246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 16930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 16950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 16960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 169846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 169946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 17000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 17020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 17030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 17053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 170646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 170746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 17080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 170919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_neg x name b] creates a 171019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub 0, %x] 171119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 171219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 171319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 171419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nsw_neg : llvalue -> string -> llbuilder -> llvalue 171519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nsw_neg" 171619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 171719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_neg x name b] creates a 171819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub 0, %x] 171919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 172019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 172119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 172219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_nuw_neg : llvalue -> string -> llbuilder -> llvalue 172319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_nuw_neg" 172419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 172519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_fneg x name b] creates a 172619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = fsub 0, %x] 172719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 172819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 172919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateFNeg]. *) 173019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaarexternal build_fneg : llvalue -> string -> llbuilder -> llvalue 173119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar = "llvm_build_fneg" 173219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 17330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 17340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 17350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 17373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 173846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 173946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 174046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 17413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 17423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 17430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 17450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 17460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 174846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 174946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 17500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 17520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 17530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 175546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 175646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 17570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 17590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 17600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 176246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 176346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 17640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 17660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 17670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 176946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 177046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 17710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1772632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 1773e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, indices...] 17740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 177646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 177746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 177846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1779e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_in_bounds_gep p indices name b] creates a 1780e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = gelementptr inbounds %p, indices...] 1781e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1782e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *) 1783e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder -> 1784e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_in_bounds_gep" 1785e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1786e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_struct_gep p idx name b] creates a 1787e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, 0, idx] 1788e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1789e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *) 1790e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_struct_gep : llvalue -> int -> string -> llbuilder -> 1791e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_struct_gep" 1792e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1793e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_string str name b] creates a series of instructions that adds 1794e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar a global string at the position specified by the instruction builder [b]. 1795e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalString]. *) 1796e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_string : string -> string -> llbuilder -> llvalue 1797e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_string" 1798e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1799e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_stringptr str name b] creates a series of instructions that 1800e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar adds a global string pointer at the position specified by the instruction 18015371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar builder [b]. 1802e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *) 1803e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_stringptr : string -> string -> llbuilder -> llvalue 1804e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_stringptr" 1805e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 18063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 18080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 18100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 18110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 181346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 181446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 18150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 18170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 18180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 182046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 182146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 18220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 18240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 18250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 182746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 182846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 18290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 18310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 18320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 183446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 183546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 18360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 18380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 18390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 184146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 184246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 18430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 18450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 18460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 184846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 184946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 18500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 18520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 18530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 185546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 185646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 18570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 18590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 18600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 186246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 186346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 18640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 18660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 18670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 186946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 187046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 18710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 18730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 18740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 187646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 187746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 18780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 18800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 18810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 188346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 188446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 18850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 18870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 18880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1889e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateBitCast]. *) 189046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 189146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 189246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1893e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast 1894e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1895e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1896e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1897e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_zext_or_bitcast" 1898e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1899e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast 1900e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1901e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *) 1902e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1903e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_sext_or_bitcast" 1904e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1905e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast 1906e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1907e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1908e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1909e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_trunc_or_bitcast" 1910e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1911e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int 1912e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1913e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePointerCast]. *) 1914e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 1915e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_pointercast" 1916e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1917e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_intcast v ty name b] creates a zext, bitcast, or trunc 1918e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1919e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIntCast]. *) 1920e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1921e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_intcast" 1922e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1923e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc 1924e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1925e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFPCast]. *) 1926e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1927e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fpcast" 1928e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 19293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 19303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 19310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 19330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 19340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 1936404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 193746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 19380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 19400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 19410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 1943404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 194446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 194546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 19463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 19473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 19480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 19500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 19510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1952a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 19533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 19542618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 19552618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 19560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 19580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 19590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 196146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 196246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 19630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 19650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 19660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 196846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 196946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 19700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 19720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 19730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 197546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 197646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 19770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 19790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 19800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 198246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 198346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 19840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 19860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 19870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 198946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 199046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 19910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 19930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 19940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 199646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 199746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 19981ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1999e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg idx name b] creates a 2000e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = extractvalue %agg, %idx] 2001e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2002e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExtractValue]. *) 2003e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 2004e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_extractvalue" 2005e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2006e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg val idx name b] creates a 2007e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = insertvalue %agg, %val, %idx] 2008e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2009e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInsertValue]. *) 2010e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 2011e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_insertvalue" 2012e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2013e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_null val name b] creates a 2014e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp eq %val, null] 2015e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2016e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNull]. *) 2017e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_null : llvalue -> string -> llbuilder -> llvalue 2018e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_null" 2019e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2020e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_not_null val name b] creates a 2021e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp ne %val, null] 2022e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2023e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNotNull]. *) 2024e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_not_null : llvalue -> string -> llbuilder -> llvalue 2025e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_not_null" 2026e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2027e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure 2028e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar the difference between two pointer values at the position specified by the 20295371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar instruction builder [b]. 2030e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePtrDiff]. *) 2031e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 2032e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_ptrdiff" 20331ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 20343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Module providers} *) 20351ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2036da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule ModuleProvider : sig 2037da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [create_module_provider m] encapsulates [m] in a module provider and takes 20383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen ownership of the module. See the constructor 20393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::ExistingModuleProvider::ExistingModuleProvider]. *) 2040da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external create : llmodule -> llmoduleprovider 2041da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen = "LLVMCreateModuleProviderForExistingModule" 20423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2043da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [dispose_module_provider mp] destroys the module provider [mp] as well as 20443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the contained module. *) 2045da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider" 2046da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2047da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 20483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 20493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 2050da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2051da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 20523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 20533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 20543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 2055da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" 2056da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2057da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [stdin ()] is the memory buffer containing the contents of standard input. 20583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 2059da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" 2060da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 20613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 2062da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" 2063da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2064d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2065d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2066d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 2067d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2068d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 2069d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 2070d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 2071d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 2072d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2073d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 2074d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 2075d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 2076d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 2077d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create : unit -> [ `Module ] t = "llvm_passmanager_create" 2078d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2079d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create_function mp] constructs a new function-by-function 2080d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen pass pipeline over the module provider [mp]. It does not take ownership of 2081d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen [mp]. This type of pipeline is suitable for code generation and JIT 2082d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen compilation tasks. 2083d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 2084d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create_function : llmoduleprovider -> [ `Function ] t 2085d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "LLVMCreateFunctionPassManager" 2086d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2087d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 2088d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 2089d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 2090d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 2091d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_module : llmodule -> [ `Module ] t -> bool 2092d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_module" 2093d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2094d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 2095d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 2096d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 2097d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 2098d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize" 2099d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2100d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 2101d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 2102d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 2103d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 2104d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_function : llvalue -> [ `Function ] t -> bool 2105d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_function" 2106d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2107d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 2108d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 2109d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 2110d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 2111d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize" 2112d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2113d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 2114d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module provider. 2115d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 2116d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external dispose : [< any ] t -> unit = "llvm_passmanager_dispose" 2117d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 2118