llvm.mli revision 45d6ac2cc13f7881687c2d7f03f9b9892fd85e6e
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 200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The top-level container for all other LLVM Intermediate Representation (IR) 213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen objects. See the [llvm::Module] class. *) 228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llmodule 230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Each value in the LLVM IR has a type, an instance of [lltype]. See the 253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type] class. *) 263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksentype lltype 270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** When building recursive types using {!refine_type}, [lltype] values may 290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen become invalid; use [lltypehandle] to resolve this problem. See the 303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::AbstractTypeHolder] class. *) 311cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksentype lltypehandle 320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Any value in the LLVM IR. Functions, instructions, global variables, 340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, and much more are all [llvalues]. See the [llvm::Value] class. 353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen This type covers a wide range of subclasses. *) 368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llvalue 370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** A basic block in LLVM IR. See the [llvm::BasicBlock] class. *) 390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype llbasicblock 400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Used to generate instructions in the LLVM IR. See the [llvm::LLVMBuilder] 423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen class. *) 4346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype llbuilder 448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 45da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to provide a module to JIT or interpreter. 463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ModuleProvider] class. *) 471ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksentype llmoduleprovider 481ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 49da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to efficiently handle large buffers of read-only binary data. 503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::MemoryBuffer] class. *) 51da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksentype llmemorybuffer 52da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type::TypeID] enumeration. *) 55404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind : sig 56404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 57404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Void 58404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Float 59404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Double 60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | X86fp80 61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Fp128 62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ppc_fp128 63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Label 64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Integer 65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Function 66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Struct 67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Array 68404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Pointer 69404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Opaque 70404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Vector 7132eaeca34fe1e6080a2916e04c89874f0b273e31Bob Wilson | Metadata 72404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linkage of a global value, accessed with {!linkage} and 753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_linkage}. See [llvm::GlobalValue::LinkageTypes]. *) 76404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig 77404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 78404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen External 7914b9ed13e79d4b8fe97e2215e7ccf095a40463fdNick Lewycky | Available_externally 80404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 81404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 83404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 84404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 85404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 86404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 87404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 88404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linker visibility of a global value, accessed with {!visibility} and 913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_visibility}. See [llvm::GlobalValue::VisibilityTypes]. *) 92404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig 93404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 94404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Default 95404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 96404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 97404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 988ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The following calling convention values may be accessed with 1003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!function_call_conv} and {!set_function_call_conv}. Calling 1013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen conventions are open-ended. *) 1021475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv : sig 1033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen val c : int (** [c] is the C calling convention. *) 1041475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val fast : int (** [fast] is the calling convention to allow LLVM 1050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 1063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen internal linkage. *) 1071475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val cold : int (** [cold] is the calling convention for 1083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen callee-save. *) 1091475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_stdcall : int (** [x86_stdcall] is the familiar stdcall calling 1103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1111475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_fastcall : int (** [x86_fastcall] is the familiar fastcall calling 1123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1131475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 11446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 115e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsmodule Attribute : sig 116e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands type t = 117e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Zext 118e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Sext 119e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noreturn 120e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Inreg 121e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Structret 122e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nounwind 123e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noalias 124e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Byval 125e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nest 126e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readnone 127e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readonly 128e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsend 129e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 1313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. *) 132404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig 133404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 134404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Eq 135404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ne 136404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 137404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 138404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 139404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 140404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sgt 141404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sge 142404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Slt 143404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sle 144404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 14546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 1473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. *) 148404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig 149404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 150404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | False 151404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oeq 152404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ogt 153404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oge 154404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Olt 155404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ole 156404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | One 157404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ord 158404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uno 159404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ueq 160404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 161404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 162404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 163404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 164404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Une 165404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | True 166404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 16746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** {6 Iteration} *) 1704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [Before b] and [At_end a] specify positions from the start of the ['b] list 172224fceb41f993fbc954345f053dab4e8caf28329Gordon Henriksen of [a]. [llpos] is used to specify positions in and for forward iteration 1734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen through the various value lists maintained by the LLVM IR. *) 1744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 1754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 1764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 1774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [After b] and [At_start a] specify positions from the end of the ['b] list 1794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of [a]. [llrev_pos] is used for reverse iteration through the various value 1804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen lists maintained by the LLVM IR. *) 1814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 1824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 1834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 1844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Exceptions} *) 1873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 188da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 189da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1908ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 1928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [create_module id] creates a module with the supplied module ID. Modules are 1943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen not garbage collected; it is mandatory to call {!dispose_module} to free 1950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen memory. See the constructor [llvm::Module::Module]. *) 1968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal create_module : string -> llmodule = "llvm_create_module" 1978ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 1990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 2000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 2013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 2028ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 2038ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 204a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 2053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 206a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal target_triple: llmodule -> string 207a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_target_triple" 208a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 209a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 2103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 211a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_target_triple: string -> llmodule -> unit 212a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_target_triple" 213a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 214a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 215a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 2163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 217a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal data_layout: llmodule -> string 218a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_data_layout" 219a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 220a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 2213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 222a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_data_layout: string -> llmodule -> unit 223a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_data_layout" 224a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 2250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table. 2260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Returns [true] if successful. If such a name already exists, then no entry 2270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen is added and [false] is returned. See the [llvm::Module::addTypeName] 2283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method. *) 22946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool 23046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_add_type_name" 23146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol 2330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen table. *) 23446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit 23546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_delete_type_name" 2368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2373c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 2383c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 2393c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksenexternal dump_module : llmodule -> unit = "llvm_dump_module" 2403c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 2418ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 2430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 2453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 246404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type" 2470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 2498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 2508ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 2520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 1-bit integer type. See [llvm::Type::Int1Ty]. *) 2543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksenval i1_type : lltype 2550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 8-bit integer type. See [llvm::Type::Int8Ty]. *) 2573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksenval i8_type : lltype 2580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 16-bit integer type. See [llvm::Type::Int16Ty]. *) 2608ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i16_type : lltype 2610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 32-bit integer type. See [llvm::Type::Int32Ty]. *) 2638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i32_type : lltype 2640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 64-bit integer type. See [llvm::Type::Int64Ty]. *) 2668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i64_type : lltype 2670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_type n] returns an integer type of bitwidth [n]. 2693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::IntegerType::get]. *) 270957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal integer_type : int -> lltype = "llvm_integer_type" 2710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [integer_bitwidth ty] returns the number of bits in the integer type [ty]. 2733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::IntegerType::getBitWidth]. *) 2748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 2758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 2783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 32-bit floating point type. See [llvm::Type::FloatTy]. *) 2808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval float_type : lltype 2810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 64-bit floating point type. See [llvm::Type::DoubleTy]. *) 2838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval double_type : lltype 2840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The x87 80-bit floating point type. See [llvm::Type::X86_FP80Ty]. *) 2868ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval x86fp80_type : lltype 2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 128-bit floating point type. See [llvm::Type::FP128Ty]. *) 2898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval fp128_type : lltype 2900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The PowerPC 128-bit floating point type. See [llvm::Type::PPC_FP128Ty]. *) 2928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval ppc_fp128_type : lltype 2938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 2980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 2993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 300957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 3010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like 3030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 3040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 3053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 306957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 307957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 3080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 3103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 3118ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 3120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 3143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 315d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 3160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 3183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 3198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 3208ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 3230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the structure type containing in the types in the 3253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen array [tys]. See the method [llvm::StructType::get]. *) 326957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal struct_type : lltype array -> lltype = "llvm_struct_type" 3270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 32886c9d6b33b16d90df9cc651a2590dee3d8918522Erick Tryzelaar(** [packed_struct_type tys] returns the packed structure type containing in the 32986c9d6b33b16d90df9cc651a2590dee3d8918522Erick Tryzelaar types in the array [tys]. See the method [llvm::StructType::get]. *) 330957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal packed_struct_type : lltype array -> lltype = "llvm_packed_struct_type" 3310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_types sty] returns the constituent types of the struct type [sty]. 3333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::StructType::getElementType]. *) 3348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal element_types : lltype -> lltype array = "llvm_element_types" 3350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 3373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 3388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 3398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 3420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 3443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 345957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 3460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 34857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 3493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 35057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 35157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 35257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 35357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 3543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 35557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 35657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 3570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 3593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 360957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 3618ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 3633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 364d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 3650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 3673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 3688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 3690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 37057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 3713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 37257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 37357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 3740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 3753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 3768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 3778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 3800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [opaque_type ()] creates a new opaque type distinct from any other. 3820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Opaque types are useful for building recursive types in combination with 383a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen {!refine_type}. 3843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See [llvm::OpaqueType::get]. *) 385957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal opaque_type : unit -> lltype = "llvm_opaque_type" 3860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [void_type] is the type of a function which does not return any value. 3883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See [llvm::Type::VoidTy]. *) 3898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval void_type : lltype 3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [label_type] is the type of a basic block. See [llvm::Type::LabelTy]. *) 3928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval label_type : lltype 3938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on type handles} *) 3950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later 3973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen refined as a result of a call to {!refine_type}, the handle will be updated; 3980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen any bare [lltype] references will become invalid. 3993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the class [llvm::PATypeHolder]. *) 4001cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" 4010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh]. 4033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PATypeHolder::get()]. *) 4041cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" 4050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the 4073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen concrete type [ty] in all users. Warning: This may invalidate {!lltype} 4083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values! Use {!lltypehandle} to manipulate potentially abstract types. See 4093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the method [llvm::Type::refineAbstractType]. *) 4101cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type" 4111cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 4128ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 4163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 4178ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 4200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 4210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 4223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 4238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 4240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 4263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 4278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 4280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 4303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 43188cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 4328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 4350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 4373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 438344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 4390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 4413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 442e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 4430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 4453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 446e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 4470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 4493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 450e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 4510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 4533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 4548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 4550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 4573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 458344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 4598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 4643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 465e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 4660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 4683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 469e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 470e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 4710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 47245d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_int_of_string ty s r] returns the integer constant of type [ty] and 47345d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar * value [s], with the radix [r]. See the method [llvm::ConstantInt::get]. *) 47445d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_int_of_string : lltype -> string -> int -> llvalue 47545d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_int_of_string" 47645d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 4770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 4782b526fec6a03be58f56e885af6b53c197973e573Erick Tryzelaar value [n]. See the method [llvm::ConstantFP::get]. *) 479e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 4808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 48145d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_float_of_string ty s] returns the floating point constant of type 48245d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar [ty] and value [n]. See the method [llvm::ConstantFP::get]. *) 48345d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaarexternal const_float_of_string : lltype -> string -> llvalue 48445d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar = "llvm_const_float_of_string" 48545d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 4863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_string s] returns the constant [i8] array with the values of the 4900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s]. The array is not null-terminated (but see 4913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!const_stringz}). This value can in turn be used as the initializer for a 4923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen global variable. See the method [llvm::ConstantArray::get]. *) 493e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_string : string -> llvalue = "llvm_const_string" 4940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_stringz s] returns the constant [i8] array with the values of the 4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s] and a null terminator. This value can in turn 4970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen be used as the initializer for a global variable. 4983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 499e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_stringz : string -> llvalue = "llvm_const_stringz" 5000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 5043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 505e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 5060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_struct elts] returns the structured constant of type 5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [struct_type (Array.map type_of elts)] and containing the values [elts]. 5090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 5103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantStruct::get]. *) 511e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_struct : llvalue array -> llvalue = "llvm_const_struct" 5120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_packed_struct elts] returns the structured constant of type 5143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!packed_struct_type} [(Array.map type_of elts)] and containing the values 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [elts]. This value can in turn be used as the initializer for a global 5163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen variable. See the method [llvm::ConstantStruct::get]. *) 517e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_packed_struct : llvalue array -> llvalue 518e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 5210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 5223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 523e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 5248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 5270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 528ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands(** [align_of ty] returns the alignof constant for the type [ty]. This is 529ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands equivalent to [const_ptrtoint (const_gep (const_null (pointer_type {i8,ty})) 530ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 0) (const_int i32_type 1)) i32_type], but considerably 531ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands more readable. See the method [llvm::ConstantExpr::getAlignOf]. *) 532ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sandsexternal align_of : lltype -> llvalue = "LLVMAlignOf" 533ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 536ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 1)) i64_type], but considerably more readable. 5373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 538e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 5390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 5413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 5424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fneg c] returns the arithmetic negation of the constant float [c]. 5451b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFNeg]. *) 5461b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fneg : llvalue -> llvalue = "LLVMConstFNeg" 5471b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 5493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 5504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 5510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 5533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 5544647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 5550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5561b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_nsw_add c1 c2] returns the constant sum of two constants with no 5571b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed wrapping. The result is undefined if the sum overflows. 5581b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 5591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_nsw_add : llvalue -> llvalue -> llvalue = "LLVMConstNSWAdd" 5601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5611b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fadd c1 c2] returns the constant sum of two constant floats. 5621b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFAdd]. *) 5631b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fadd : llvalue -> llvalue -> llvalue = "LLVMConstFAdd" 5641b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 5663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 5674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5691b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fsub c1 c2] returns the constant difference, [c1 - c2], of two 5701b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant floats. See the method [llvm::ConstantExpr::getFSub]. *) 5711b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fsub : llvalue -> llvalue -> llvalue = "LLVMConstFSub" 5721b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 5743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 5754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5771b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fmul c1 c2] returns the constant product of two constants floats. 5781b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFMul]. *) 5791b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fmul : llvalue -> llvalue -> llvalue = "LLVMConstFMul" 5801b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 5820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 5833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 5844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 5850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 5870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 5881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSDiv]. *) 5894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_exact_sdiv c1 c2] returns the constant quotient [c1 / c2] of two 5921b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed integer constants. The result is undefined if the result is rounded 5931b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar or overflows. See the method [llvm::ConstantExpr::getExactSDiv]. *) 5941b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_exact_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstExactSDiv" 5951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 5960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 5970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 5983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 5994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 6000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_urem c1 c2] returns the constant remainder [c1 MOD c2] of two 6020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 6033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 6044647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 6050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6061b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_srem c1 c2] returns the constant remainder [c1 MOD c2] of two 6070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 6083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 6094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 6100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 6120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 6133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 6144647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 6150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 6170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 6183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 6194647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 6220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 6233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 6244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 6250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 6270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 6283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 6294647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 6300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 6320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 6333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 634404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 6354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 6360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 6380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 6393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 640404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 6414647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 6420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 6440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 6453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 6464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 6470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 6490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 6503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 6514647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 6520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 6553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 6564647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 6570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 6603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 6614647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 6620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6631b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_in_bounds_gep pc indices] returns the constant [getElementPtr] of [p1] 6641b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar with the constant integers indices from the array [indices]. 6651b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getInBoundsGetElementPtr]. *) 6661b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_in_bounds_gep : llvalue -> llvalue array -> llvalue 6671b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_in_bounds_gep" 6681b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 6690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 6700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 6713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 6724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 6730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 6750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 6763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 6774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 6780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 6800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 6813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 6824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 6830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 6850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 6863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 6874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 6880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 6900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 6913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 6924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 6930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 6963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 6974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 6980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 7000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 7013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 7024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 7030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 7063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 7074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 7080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 7100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 7113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 7124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 7150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 7163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 7174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 7180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 7213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 7224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 7230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 7263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 7274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 7280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7291b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_zext_or_bitcast c ty] returns a constant zext or bitwise cast 7301b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 7311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getZExtOrBitCast]. *) 7321b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_zext_or_bitcast : llvalue -> lltype -> llvalue 7331b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstZExtOrBitCast" 7341b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7351b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_sext_or_bitcast c ty] returns a constant sext or bitwise cast 7361b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 7371b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSExtOrBitCast]. *) 7381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_sext_or_bitcast : llvalue -> lltype -> llvalue 7391b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstSExtOrBitCast" 7401b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_trunc_or_bitcast c ty] returns a constant trunc or bitwise cast 7421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 7431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getTruncOrBitCast]. *) 7441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_trunc_or_bitcast : llvalue -> lltype -> llvalue 7451b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstTruncOrBitCast" 7461b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7471b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_pointercast c ty] returns a constant bitcast or a pointer-to-int 7481b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar cast conversion of constant [c] to type [ty] of equal size. 7491b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getPointerCast]. *) 7501b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_pointercast : llvalue -> lltype -> llvalue 7511b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstPointerCast" 7521b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7531b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_intcast c ty] returns a constant zext, bitcast, or trunc for integer 7541b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar -> integer casts of constant [c] to type [ty]. 7551b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getIntCast]. *) 7561b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_intcast : llvalue -> lltype -> llvalue 7571b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstIntCast" 7581b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> 7601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar fp casts of constant [c] to type [ty]. 7611b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFPCast]. *) 7621b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_fpcast : llvalue -> lltype -> llvalue 7631b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "LLVMConstFPCast" 7641b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 7650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 7660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 7673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 7684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 7694647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 7700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 7720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 7730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 7743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 7754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 7764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 7770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 7790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 7800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 7810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 7833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 7844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 7854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 7860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 7880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the LLVM Language Reference for details on the [sufflevector] 7890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 7903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 7914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 7924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 7934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 7941b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_extractvalue agg idxs] returns the constant [idxs]th value of 7951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant aggregate [agg]. Each [idxs] must be less than the size of the 7961b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar aggregate. See the method [llvm::ConstantExpr::getExtractValue]. *) 7971b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_extractvalue : llvalue -> int array -> llvalue 7981b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_extractvalue" 7991b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8001b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_insertvalue agg val idxs] inserts the value [val] in the specified 8011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar indexs [idxs] in the aggegate [agg]. Each [idxs] must be less than the size 8021b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar of the aggregate. See the method [llvm::ConstantExpr::getInsertValue]. *) 8031b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaarexternal const_insertvalue : llvalue -> llvalue -> int array -> llvalue 8041b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar = "llvm_const_insertvalue" 8051b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 8073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 809dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 810dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 811dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" 812dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 8140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 8153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 8168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 8193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 820404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage" 8210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 8233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 824404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" 8250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 8273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 8288ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 8290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 8313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 8328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 8330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 8353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 836404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility" 8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 8393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 840404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit 841404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen = "llvm_set_visibility" 8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 8443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 8458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 8460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 8483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 8498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 8508ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 8513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 8523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 8530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 8550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a global variable already exists, 8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing global differs, then a bitcast 8573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 8588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 8598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer [init] in module [m]. If the named global already exists, it is 8630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. 8643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 8658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 8668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 8670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 8690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 8703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 8716d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 8726d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 8730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 8753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 8768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 8770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 8794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 8804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 8814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 8824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_begin : llmodule -> (llmodule, llvalue) llpos 8834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_begin" 8844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 8864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 8874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 8884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_succ : llvalue -> (llmodule, llvalue) llpos 8894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_succ" 8904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 8924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 8934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 8944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 8964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 8974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 8984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 9004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 9014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 9024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 9034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_end : llmodule -> (llmodule, llvalue) llrev_pos 9044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_end" 9054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 9074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 9084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 9094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_pred : llvalue -> (llmodule, llvalue) llrev_pos 9104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_pred" 9114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 9134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 9144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 9154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 9174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 9184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 9194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 9210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 9223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 9273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 9280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 9290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen = "llvm_set_global_constant" 9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 9323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 93346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 9360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 9373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 9388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 9390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 9410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 9423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 9438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 9440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 9460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 9473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 9488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 9490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 9510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 9523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 9538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 9548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 9553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 9563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 9570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 9590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 9600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 9613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 96246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 96346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 9640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 9670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 9683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 96946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 97046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 9710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 9730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 9743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 9756d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 9766d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 9770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 9793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 98046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 9834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 9844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 9854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 9864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_begin : llmodule -> (llmodule, llvalue) llpos 9874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_begin" 9884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 9904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 9914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 9924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_succ : llvalue -> (llmodule, llvalue) llpos 9934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_succ" 9944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 9964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 9974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 9984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 10004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 10014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 10024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 10044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 10054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 10064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 10074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_end : llmodule -> (llmodule, llvalue) llrev_pos 10084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_end" 10094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 10114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 10124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_pred : llvalue -> (llmodule, llvalue) llrev_pos 10134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_pred" 10144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 10164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 10174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 10184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 10204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 10214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 10224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 10243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 102546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 10260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 10283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 102946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 10300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 10320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 10333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 103446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 103546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 103646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 10375eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [gc f] returns [Some name] if the function [f] has a garbage 103880a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 10395eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen See the method [llvm::Function::getGC]. *) 10405eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal gc : llvalue -> string option = "llvm_gc" 104180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 10425eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [set_gc gc f] sets the collection algorithm for the function [f] to 10435eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen [gc]. See the method [llvm::Function::setGC]. *) 10445eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksenexternal set_gc : string option -> llvalue -> unit = "llvm_set_gc" 104580a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1046e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_function_attr f a] adds attribute [a] to the return type of function 1047e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [f]. *) 1048e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_function_attr : llvalue -> Attribute.t -> unit 1049e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_function_attr" 1050e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1051e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_function_attr f a] removes attribute [a] from the return type of 1052e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands function [f]. *) 1053e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_function_attr : llvalue -> Attribute.t -> unit 1054e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_function_attr" 10553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1056dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 1057dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1058dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 1059dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1060dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 1061dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1062dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 1063dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1064dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 1065dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1066dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 1067dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 1068dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param_parent : llvalue -> llvalue = "LLVMGetParamParent" 1069dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 10704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 10714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 10724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 10734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 10744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_begin : llvalue -> (llvalue, llvalue) llpos = "llvm_param_begin" 10754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 10774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 10784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 10794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_succ : llvalue -> (llvalue, llvalue) llpos = "llvm_param_succ" 10804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 10824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 10834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 10844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 10864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 10874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 10884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 10904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 10914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 10924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 10934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_end : llvalue -> (llvalue, llvalue) llrev_pos = "llvm_param_end" 10944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 10964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 10974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_pred : llvalue -> (llvalue, llvalue) llrev_pos 10984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_param_pred" 10994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 11014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 11024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 11034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 11054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 11064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 11074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1108e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_param p a] adds attribute [a] to parameter [p]. *) 1109e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_param_attr : llvalue -> Attribute.t -> unit = "llvm_add_param_attr" 1110e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1111e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_param_attr p a] removes attribute [a] from parameter [p]. *) 1112e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_param_attr : llvalue -> Attribute.t -> unit 1113e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_param_attr" 1114e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1115e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [set_param_alignment p a] set the alignment of parameter [p] to [a]. *) 1116e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal set_param_alignment : llvalue -> int -> unit 1117e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_set_param_alignment" 1118dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 11200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 11223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 112346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 11263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 112746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 11303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 113146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [append_block name f] creates a new basic block named [name] at the end of 11340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen function [f]. 11353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 113646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal append_block : string -> llvalue -> llbasicblock = "llvm_append_block" 11370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [insert_block name bb] creates a new basic block named [name] before the 11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen basic block [bb]. 11403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 114146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal insert_block : string -> llbasicblock -> llbasicblock 114246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 11430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1144dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1145dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1146dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_parent : llbasicblock -> llvalue = "LLVMGetBasicBlockParent" 1147dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 11494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 11504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 11514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 11524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_begin : llvalue -> (llvalue, llbasicblock) llpos 11534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_begin" 11544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 11564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 11574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 11584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 11594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_succ" 11604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 11624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 11634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 11644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 11664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 11674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 11684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 11704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 11714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 11724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 11734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 11744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_end" 11754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_pred gv] returns the function list position preceding [After gv]. 11774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 11784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 11794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_pred" 11804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 11824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 11834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 11844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 11864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 11874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 11884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 11893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 119046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 11910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 11930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 11943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 119546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 119846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 119946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1200cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1201dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1202dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1203dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1204dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1205dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal instr_parent : llvalue -> llbasicblock = "LLVMGetInstructionParent" 1206dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1207033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1208033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1209033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1210033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1211033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1212033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_begin" 1213033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1214033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1215033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1216033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1217033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_succ" 1218033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1219033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1220033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1221033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1222033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1223033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1224033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1225033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1226033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1227033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1228033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1229033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1230033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1231033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1232033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_end" 1233033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1234033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1235033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1236033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1237033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_pred" 1238033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1239033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1240033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1241033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1242033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1243dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 12453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 12473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 12483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 12493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1250cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal instruction_call_conv: llvalue -> int 1251cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_instruction_call_conv" 1252cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1253dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1254dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1255dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1256dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 12573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1258cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal set_instruction_call_conv: int -> llvalue -> unit 1259cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_set_instruction_call_conv" 1260cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1261e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_instruction_param_attr ci i a] adds attribute [a] to the [i]th 1262e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands parameter of the call or invoke instruction [ci]. [i]=0 denotes the return 1263e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands value. *) 1264e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal add_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1265e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_add_instruction_param_attr" 1266e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1267e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_instruction_param_attr ci i a] removes attribute [a] from the 1268e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [i]th parameter of the call or invoke instruction [ci]. [i]=0 denotes the 1269e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands return value. *) 1270e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsexternal remove_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1271e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands = "llvm_remove_instruction_param_attr" 1272e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 127307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** {Operations on call instructions (only)} *) 127407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 127507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [is_tail_call ci] is [true] if the call instruction [ci] is flagged as 127607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen eligible for tail call optimization, [false] otherwise. 127707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::isTailCall]. *) 127807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal is_tail_call : llvalue -> bool = "llvm_is_tail_call" 127907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 128007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [set_tail_call tc ci] flags the call instruction [ci] as eligible for tail 128107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen call optimization if [tc] is [true], clears otherwise. 128207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::setTailCall]. *) 128307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksenexternal set_tail_call : bool -> llvalue -> unit = "llvm_set_tail_call" 12843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 12860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 12883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 12892618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 12902618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 12910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 12933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 12942618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 12952618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 129646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 12973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 12990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1300dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [builder ()] creates an instruction builder with no position. It is invalid 1301dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen to use this builder until its position is set with {!position_before} or 13023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!position_at_end}. See the constructor for [llvm::LLVMBuilder]. *) 1303033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal builder : unit -> llbuilder = "llvm_builder" 1304033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1305033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1306033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1307033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_at : (llbasicblock, llvalue) llpos -> llbuilder 1308a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 13090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 13103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 1311033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_before : llvalue -> llbuilder 13120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 13143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 1315033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_at_end : llbasicblock -> llbuilder 1316033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1317033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1318033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1319033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1320033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1321033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_position_builder" 13220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 13243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1325033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 13260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 13283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1329033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 133046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1331dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1332dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1333dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1334dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1335dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal insertion_block : llbuilder -> llbasicblock = "llvm_insertion_block" 1336dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 13375c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar(** [insert_into_builder i name b] inserts the specified instruction [i] at the 13385c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar position specified by the instruction builder [b]. 13395c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar See the method [llvm::LLVMBuilder::Insert]. *) 13405c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaarexternal insert_into_builder : llvalue -> string -> llbuilder -> unit 13415c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar = "llvm_insert_into_builder" 13425c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 13433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 13450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 13470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 13480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 135046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 13510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 13530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 13540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 135646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 13570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1358e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_aggregate_ret vs b] creates a 1359e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [ret {...} { %v1, %v2, ... } ] 1360e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1361e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateAggregateRet]. *) 1362e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1363e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_aggregate_ret" 1364e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 13650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 13660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %bb] 13670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 136946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 13700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 13720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %cond, %tbb, %fbb] 13730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 137546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 137646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 13770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 137821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [build_switch case elsebb count b] creates an empty 13790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 138021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen instruction at the position specified by the instruction builder [b] with 138121491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen space reserved for [count] cases. 13823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 138346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 138446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 13850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 138621491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [add_case sw onval bb] causes switch instruction [sw] to branch to [bb] 138721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen when its input matches the constant [onval]. 138821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen See the method [llvm::SwitchInst::addCase]. **) 138921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksenexternal add_case : llvalue -> llvalue -> llbasicblock -> unit 139021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen = "llvm_add_case" 139121491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen 13920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 13930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 13940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 139646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 139746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 139846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 13990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an 14010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unwind] 14020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 140446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind" 14050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 14070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 14080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 141046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 141146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 14140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 14160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 14170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 141946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 142046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 14210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1422e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_nswadd x y name b] creates a 1423e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = nsw add %x, %y] 1424e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1425e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWAdd]. *) 1426e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1427e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_nsw_add" 1428e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1429e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fadd x y name b] creates a 1430e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fadd %x, %y] 1431e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1432e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFAdd]. *) 1433e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1434e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fadd" 1435e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 14360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 14370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 14380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 144046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 144146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 14420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1443e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fsub x y name b] creates a 1444e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fsub %x, %y] 1445e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1446e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFSub]. *) 1447e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1448e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fsub" 1449e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 14500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 14510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 14520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 145446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 145546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 14560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1457e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fmul x y name b] creates a 1458e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fmul %x, %y] 1459e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1460e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFMul]. *) 1461e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1462e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fmul" 1463e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 14640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 14650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 14660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 146846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 146946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 14700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 14720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 14730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 147546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 147646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 14770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1478e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_exact_sdiv x y name b] creates a 1479e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = exact sdiv %x, %y] 1480e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1481e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExactSDiv]. *) 1482e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1483e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_exact_sdiv" 1484e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 14850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 14860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 14870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 148946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 149046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 14910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 14930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 14940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 149646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 149746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 14980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 15000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 15010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 150346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 150446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 15050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 15070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 15080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 151046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 151146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 15120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 15140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 15150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 151746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 151846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 15190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 15210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 15220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 152446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 152546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 15260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 15280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 15290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 153146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 153246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 15330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 15350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 15360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 153846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 153946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 15400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 15420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 15430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 154546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 154646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 15470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 15490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 15500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 155246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 155346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 15540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 15560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 15570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 15593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 156046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 156146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 15620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 15640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 15650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 15673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 156846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 156946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 157046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 15730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_malloc ty name b] creates a 15750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty] 15760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 157846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_malloc : lltype -> string -> llbuilder -> llvalue 157946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_malloc" 15800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_malloc ty n name b] creates a 15820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty, %n] 15830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMalloc]. *) 158546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder -> 158646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_malloc" 15870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 15890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 15900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 159246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 159346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 15940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 15960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 15970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 159946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 160046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 16010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_free v b] creates a 16030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [free %v] 16040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFree]. *) 160646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free" 16070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 16090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 16100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 161246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 161346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 16140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 16160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 16170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 161946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 162046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 16210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1622632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 1623e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, indices...] 16240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 162646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 162746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 162846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1629e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_in_bounds_gep p indices name b] creates a 1630e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = gelementptr inbounds %p, indices...] 1631e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1632e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *) 1633e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder -> 1634e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_in_bounds_gep" 1635e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1636e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_struct_gep p idx name b] creates a 1637e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, 0, idx] 1638e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1639e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *) 1640e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_struct_gep : llvalue -> int -> string -> llbuilder -> 1641e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_struct_gep" 1642e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1643e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_string str name b] creates a series of instructions that adds 1644e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar a global string at the position specified by the instruction builder [b]. 1645e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalString]. *) 1646e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_string : string -> string -> llbuilder -> llvalue 1647e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_string" 1648e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1649e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_stringptr str name b] creates a series of instructions that 1650e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar adds a global string pointer at the position specified by the instruction 1651e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar builder [b]. 1652e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *) 1653e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_global_stringptr : string -> string -> llbuilder -> llvalue 1654e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_global_stringptr" 1655e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 16563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 16573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 16580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 16600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 16610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 166346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 166446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 16650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 16670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 16680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 167046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 167146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 16720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 16740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 16750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 167746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 167846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 16790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 16810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 16820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 168446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 168546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 16860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 16880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 16890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 169146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 169246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 16930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 16950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 16960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 16973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 169846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 169946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 17000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 17020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 17030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 170546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 170646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 17070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 17090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 17100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 171246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 171346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 17140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 17160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 17170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 171946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 172046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 17210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 17230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 17240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 172646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 172746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 17280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 17300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 17310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 173346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 173446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 17350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 17370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 17380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1739e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateBitCast]. *) 174046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 174146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 174246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1743e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast 1744e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1745e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1746e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1747e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_zext_or_bitcast" 1748e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1749e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast 1750e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1751e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *) 1752e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1753e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_sext_or_bitcast" 1754e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1755e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast 1756e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1757e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 1758e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 1759e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_trunc_or_bitcast" 1760e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1761e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int 1762e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1763e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePointerCast]. *) 1764e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 1765e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_pointercast" 1766e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1767e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_intcast v ty name b] creates a zext, bitcast, or trunc 1768e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1769e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIntCast]. *) 1770e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1771e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_intcast" 1772e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1773e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc 1774e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1775e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFPCast]. *) 1776e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 1777e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_fpcast" 1778e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 17793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 17803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 17810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 17830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 17840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 1786404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 178746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 17880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 17900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 17910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 1793404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 179446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 179546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 17963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 17973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 17980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 18000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 18010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1802a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 18033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 18042618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 18052618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 18060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 18080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 18090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 181146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 181246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 18130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 18150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 18160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 181846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 181946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 18200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 18220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 18230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 182546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 182646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 18270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 18290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 18300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 183246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 183346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 18340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 18360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 18370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 183946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 184046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 18410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 18430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 18440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 184646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 184746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 18481ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1849e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg idx name b] creates a 1850e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = extractvalue %agg, %idx] 1851e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1852e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExtractValue]. *) 1853e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 1854e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_extractvalue" 1855e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1856e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg val idx name b] creates a 1857e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = insertvalue %agg, %val, %idx] 1858e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1859e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInsertValue]. *) 1860e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 1861e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar llvalue = "llvm_build_insertvalue" 1862e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1863e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_null val name b] creates a 1864e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp eq %val, null] 1865e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1866e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNull]. *) 1867e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_null : llvalue -> string -> llbuilder -> llvalue 1868e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_null" 1869e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1870e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_not_null val name b] creates a 1871e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp ne %val, null] 1872e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1873e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNotNull]. *) 1874e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_is_not_null : llvalue -> string -> llbuilder -> llvalue 1875e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_is_not_null" 1876e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 1877e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure 1878e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar the difference between two pointer values at the position specified by the 1879e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction builder [b]. 1880e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePtrDiff]. *) 1881e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaarexternal build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 1882e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar = "llvm_build_ptrdiff" 18831ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 18843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Module providers} *) 18851ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1886da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule ModuleProvider : sig 1887da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [create_module_provider m] encapsulates [m] in a module provider and takes 18883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen ownership of the module. See the constructor 18893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::ExistingModuleProvider::ExistingModuleProvider]. *) 1890da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external create : llmodule -> llmoduleprovider 1891da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen = "LLVMCreateModuleProviderForExistingModule" 18923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1893da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [dispose_module_provider mp] destroys the module provider [mp] as well as 18943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the contained module. *) 1895da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider" 1896da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 1897da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 18983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 1900da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1901da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 19023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 19033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 19043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 1905da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" 1906da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1907da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [stdin ()] is the memory buffer containing the contents of standard input. 19083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 1909da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" 1910da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 19113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 1912da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" 1913da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 1914d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1915d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1916d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 1917d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1918d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 1919d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 1920d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 1921d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 1922d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1923d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 1924d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 1925d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 1926d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 1927d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create : unit -> [ `Module ] t = "llvm_passmanager_create" 1928d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1929d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create_function mp] constructs a new function-by-function 1930d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen pass pipeline over the module provider [mp]. It does not take ownership of 1931d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen [mp]. This type of pipeline is suitable for code generation and JIT 1932d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen compilation tasks. 1933d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 1934d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create_function : llmoduleprovider -> [ `Function ] t 1935d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "LLVMCreateFunctionPassManager" 1936d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1937d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 1938d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 1939d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 1940d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 1941d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_module : llmodule -> [ `Module ] t -> bool 1942d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_module" 1943d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1944d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 1945d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 1946d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 1947d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 1948d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize" 1949d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1950d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 1951d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 1952d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 1953d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 1954d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_function : llvalue -> [ `Function ] t -> bool 1955d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_function" 1956d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1957d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 1958d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 1959d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 1960d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 1961d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize" 1962d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1963d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 1964d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module provider. 1965d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 1966d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external dispose : [< any ] t -> unit = "llvm_passmanager_dispose" 1967d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 1968