llvm.mli revision 033d778249e59548c495f39166a53fa80f48eb91
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 71404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 728ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linkage of a global value, accessed with {!linkage} and 743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_linkage}. See [llvm::GlobalValue::LinkageTypes]. *) 75404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig 76404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 77404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen External 78404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 79404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 80404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 81404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 83404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 84404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 85404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 86404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 878ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linker visibility of a global value, accessed with {!visibility} and 893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_visibility}. See [llvm::GlobalValue::VisibilityTypes]. *) 90404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig 91404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 92404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Default 93404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 94404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 95404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The following calling convention values may be accessed with 983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!function_call_conv} and {!set_function_call_conv}. Calling 993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen conventions are open-ended. *) 1001475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv : sig 1013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen val c : int (** [c] is the C calling convention. *) 1021475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val fast : int (** [fast] is the calling convention to allow LLVM 1030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 1043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen internal linkage. *) 1051475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val cold : int (** [cold] is the calling convention for 1063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen callee-save. *) 1071475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_stdcall : int (** [x86_stdcall] is the familiar stdcall calling 1083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1091475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_fastcall : int (** [x86_fastcall] is the familiar fastcall calling 1103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1111475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 11246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 1143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. *) 115404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig 116404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 117404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Eq 118404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ne 119404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 120404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 121404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 122404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 123404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sgt 124404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sge 125404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Slt 126404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sle 127404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 12846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 1303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. *) 131404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig 132404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 133404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | False 134404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oeq 135404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ogt 136404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oge 137404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Olt 138404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ole 139404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | One 140404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ord 141404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uno 142404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ueq 143404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 144404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 145404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 146404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 147404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Une 148404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | True 149404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 15046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** {6 Iteration} *) 1534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [Before b] and [At_end a] specify positions from the start of the ['b] list 155224fceb41f993fbc954345f053dab4e8caf28329Gordon Henriksen of [a]. [llpos] is used to specify positions in and for forward iteration 1564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen through the various value lists maintained by the LLVM IR. *) 1574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 1584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 1594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 1604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [After b] and [At_start a] specify positions from the end of the ['b] list 1624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of [a]. [llrev_pos] is used for reverse iteration through the various value 1634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen lists maintained by the LLVM IR. *) 1644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 1654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 1664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 1674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Exceptions} *) 1703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 171da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 172da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 1758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [create_module id] creates a module with the supplied module ID. Modules are 1773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen not garbage collected; it is mandatory to call {!dispose_module} to free 1780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen memory. See the constructor [llvm::Module::Module]. *) 1798ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal create_module : string -> llmodule = "llvm_create_module" 1808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 1820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 1830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 1843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 1858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 1868ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 187a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 1883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 189a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal target_triple: llmodule -> string 190a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_target_triple" 191a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 192a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 1933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 194a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_target_triple: string -> llmodule -> unit 195a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_target_triple" 196a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 197a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 198a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 1993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 200a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal data_layout: llmodule -> string 201a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_data_layout" 202a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 203a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 2043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 205a353ffa7e556bfd2864474911174da691117f691Gordon Henriksenexternal set_data_layout: string -> llmodule -> unit 206a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen = "llvm_set_data_layout" 207a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 2080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table. 2090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Returns [true] if successful. If such a name already exists, then no entry 2100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen is added and [false] is returned. See the [llvm::Module::addTypeName] 2113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method. *) 21246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool 21346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_add_type_name" 21446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol 2160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen table. *) 21746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit 21846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_delete_type_name" 2198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2203c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 2213c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 2223c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksenexternal dump_module : llmodule -> unit = "llvm_dump_module" 2233c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 2248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 2260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 2283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 229404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal classify_type : lltype -> TypeKind.t = "llvm_classify_type" 2300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 2328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 2338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 2350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 1-bit integer type. See [llvm::Type::Int1Ty]. *) 2373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksenval i1_type : lltype 2380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 8-bit integer type. See [llvm::Type::Int8Ty]. *) 2403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksenval i8_type : lltype 2410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 16-bit integer type. See [llvm::Type::Int16Ty]. *) 2438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i16_type : lltype 2440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 32-bit integer type. See [llvm::Type::Int32Ty]. *) 2468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i32_type : lltype 2470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The 64-bit integer type. See [llvm::Type::Int64Ty]. *) 2498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i64_type : lltype 2500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_type n] returns an integer type of bitwidth [n]. 2523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::IntegerType::get]. *) 253957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal integer_type : int -> lltype = "llvm_integer_type" 2540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [integer_bitwidth ty] returns the number of bits in the integer type [ty]. 2563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::IntegerType::getBitWidth]. *) 2578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 2588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 2613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 32-bit floating point type. See [llvm::Type::FloatTy]. *) 2638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval float_type : lltype 2640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 64-bit floating point type. See [llvm::Type::DoubleTy]. *) 2668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval double_type : lltype 2670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The x87 80-bit floating point type. See [llvm::Type::X86_FP80Ty]. *) 2698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval x86fp80_type : lltype 2700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The IEEE 128-bit floating point type. See [llvm::Type::FP128Ty]. *) 2728ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval fp128_type : lltype 2730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The PowerPC 128-bit floating point type. See [llvm::Type::PPC_FP128Ty]. *) 2758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval ppc_fp128_type : lltype 2768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 2790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 2810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 2823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 283957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 2840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like 2860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 2883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 289957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 290957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 2910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 2933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 2948ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 2950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 2973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 298d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 2990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 3013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 3028ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 3038ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 3060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the structure type containing in the types in the 3083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen array [tys]. See the method [llvm::StructType::get]. *) 309957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal struct_type : lltype array -> lltype = "llvm_struct_type" 3100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the packed structure type containing in the types 3123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen in the array [tys]. See the method [llvm::StructType::get]. *) 313957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal packed_struct_type : lltype array -> lltype = "llvm_packed_struct_type" 3140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_types sty] returns the constituent types of the struct type [sty]. 3163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::StructType::getElementType]. *) 3178ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal element_types : lltype -> lltype array = "llvm_element_types" 3180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 3203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 3218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 3228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 3250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 3273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 328957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 3290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 33157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 3323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 33357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 33457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 33557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 33657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 3373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 33857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 33957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 3400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 3423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 343957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 3448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 3463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 347d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 3480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 3503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 3518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 3520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 35357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 3543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 35557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 35657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 3570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 3583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 3598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 3608ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 3623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 3630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [opaque_type ()] creates a new opaque type distinct from any other. 3650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Opaque types are useful for building recursive types in combination with 366a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen {!refine_type}. 3673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See [llvm::OpaqueType::get]. *) 368957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal opaque_type : unit -> lltype = "llvm_opaque_type" 3690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [void_type] is the type of a function which does not return any value. 3713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See [llvm::Type::VoidTy]. *) 3728ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval void_type : lltype 3730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [label_type] is the type of a basic block. See [llvm::Type::LabelTy]. *) 3758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval label_type : lltype 3768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on type handles} *) 3780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later 3803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen refined as a result of a call to {!refine_type}, the handle will be updated; 3810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen any bare [lltype] references will become invalid. 3823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the class [llvm::PATypeHolder]. *) 3831cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" 3840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh]. 3863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PATypeHolder::get()]. *) 3871cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" 3880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the 3903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen concrete type [ty] in all users. Warning: This may invalidate {!lltype} 3913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values! Use {!lltypehandle} to manipulate potentially abstract types. See 3923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the method [llvm::Type::refineAbstractType]. *) 3931cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type" 3941cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3958ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 3970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 3993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 4008ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 4010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 4030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 4040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 4053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 4068ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 4070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 4093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 4108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 4110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 4133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 41488cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 4158ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 4203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 421344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 4220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 4243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 425e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 4260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 4283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 429e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 4300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 4323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 433e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 4340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 4363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 4378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 4380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 4403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 441344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 4428ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 4450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 4473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 448e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 4490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 4513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 452e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 453e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 4540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 4563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen value [n]. See the method [llvm::ConstantInt::get]. *) 457e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 4588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_string s] returns the constant [i8] array with the values of the 4630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s]. The array is not null-terminated (but see 4643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!const_stringz}). This value can in turn be used as the initializer for a 4653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen global variable. See the method [llvm::ConstantArray::get]. *) 466e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_string : string -> llvalue = "llvm_const_string" 4670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_stringz s] returns the constant [i8] array with the values of the 4690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s] and a null terminator. This value can in turn 4700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen be used as the initializer for a global variable. 4713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 472e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_stringz : string -> llvalue = "llvm_const_stringz" 4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 4750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 4760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 4773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 478e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 4790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_struct elts] returns the structured constant of type 4810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [struct_type (Array.map type_of elts)] and containing the values [elts]. 4820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 4833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantStruct::get]. *) 484e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_struct : llvalue array -> llvalue = "llvm_const_struct" 4850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_packed_struct elts] returns the structured constant of type 4873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!packed_struct_type} [(Array.map type_of elts)] and containing the values 4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [elts]. This value can in turn be used as the initializer for a global 4893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen variable. See the method [llvm::ConstantStruct::get]. *) 490e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_packed_struct : llvalue array -> llvalue 491e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 4920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 4940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 4953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 496e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 4978ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 5000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen (const_int i64_type 1)) i64_type], but considerably more readable. 5043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 505e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 5060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 5083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 5094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 5100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 5123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 5134647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 5163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 5174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 5180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 5203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 5214647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 5220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 5243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 5254647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 5280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 5293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 5304647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 5310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 5343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::]. *) 5354647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 5360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 5393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 5404647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 5410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant remainder [c1 MOD c2] of two 5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 5443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 5454647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 5460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant remainder [c1 MOD c2] of two 5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 5493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 5504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 5510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 5543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 5554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 5560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 5580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 5593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 5604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 5610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 5630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 5643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 5654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 5660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 5693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 5704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 5743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 575404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 5764647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 5770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 5790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 5803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 581404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 5824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 5830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 5850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 5863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 5874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 5880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 5913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 5924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 5930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 5950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 5963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 5974647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 5980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 6000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 6013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 6024647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 6030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 6050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 6063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 6074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 6080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 6100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 6113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 6124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 6150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 6163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 6174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 6180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 6213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 6224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 6230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 6250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 6263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 6274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 6280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 6300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 6313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 6324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 6330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 6350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 6363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 6374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 6380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 6400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 6413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 6424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 6430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 6450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 6463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 6474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 6480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 6500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 6513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 6524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 6530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 6550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 6563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 6574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 6580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 6600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 6613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 6624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 6630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 6650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 6663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 6674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 6684647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 6690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 6710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 6733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 6744647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 6754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 6760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 6780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 6790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 6800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 6810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 6823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 6834647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 6844647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 6850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 6870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the LLVM Language Reference for details on the [sufflevector] 6880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 6893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 6904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 6914647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 6924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 6943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 696dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 697dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 698dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal global_parent : llvalue -> llmodule = "LLVMGetGlobalParent" 699dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 7000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 7010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 7023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 7038ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 7040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 7063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 707404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal linkage : llvalue -> Linkage.t = "llvm_linkage" 7080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 7103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 711404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_linkage : Linkage.t -> llvalue -> unit = "llvm_set_linkage" 7120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 7143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 7158ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 7160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 7183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 7198ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 7223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 723404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal visibility : llvalue -> Visibility.t = "llvm_visibility" 7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 7263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 727404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal set_visibility : Visibility.t -> llvalue -> unit 728404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen = "llvm_set_visibility" 7290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 7313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 7328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 7330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 7353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 7368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 7378ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 7383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 7393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 7400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 7420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a global variable already exists, 7430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing global differs, then a bitcast 7443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 7458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 7468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 7470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 7490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer [init] in module [m]. If the named global already exists, it is 7500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. 7513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 7528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 7538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 7573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 7586d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 7596d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 7600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 7623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 7638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 7640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 7664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 7674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 7684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 7694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_begin : llmodule -> (llmodule, llvalue) llpos 7704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_begin" 7714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 7734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 7744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 7754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_succ : llvalue -> (llmodule, llvalue) llpos 7764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_succ" 7774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 7794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 7804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 7814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 7834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 7844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 7854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 7874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 7884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 7894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 7904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_end : llmodule -> (llmodule, llvalue) llrev_pos 7914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_end" 7924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 7944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 7954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 7964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal global_pred : llvalue -> (llmodule, llvalue) llrev_pos 7974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_global_pred" 7984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 7994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 8004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 8014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 8024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 8044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 8054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 8064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 8093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 8100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 8110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 8143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 8150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 8160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen = "llvm_set_global_constant" 8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [has_initializer gv] returns [true] if the global variable [gv] has an 8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer and [false] otherwise. 8203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::hasInitializer]. *) 8210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal has_initializer : llvalue -> bool = "llvm_has_initializer" 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 8243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 82546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 8260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 8280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 8293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 8308ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 8330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 8343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 8358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 8360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 8380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 8393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 8408ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 8430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 8443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 8458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 8468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 8473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 8483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 8490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 8510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 8520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 8533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 85446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 85546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 8580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 8590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 8603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 86146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 86246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 8630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 8650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 8663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 8676d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 8686d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 8690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 8713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 87246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 8730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 8754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 8764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 8774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 8784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_begin : llmodule -> (llmodule, llvalue) llpos 8794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_begin" 8804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 8824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 8834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 8844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_succ : llvalue -> (llmodule, llvalue) llpos 8854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_succ" 8864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 8884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 8894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 8904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 8924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 8934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 8944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 8954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 8964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 8974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 8984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 8994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_end : llmodule -> (llmodule, llvalue) llrev_pos 9004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_end" 9014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 9034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 9044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal function_pred : llvalue -> (llmodule, llvalue) llrev_pos 9054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_function_pred" 9064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 9084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 9094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 9104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 9124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 9134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 9144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 9163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 91746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 9180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 9203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 92146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 9220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 9253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 92646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 92746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 92846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 92980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [collector f] returns [Some name] if the function [f] has a garbage 93080a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 9313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCollector]. *) 93280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal collector : llvalue -> string option = "llvm_collector" 93380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 93480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [set_collector gc f] sets the collection algorithm for the function [f] to 9353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gc]. See the method [llvm::Function::setCollector]. *) 93680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal set_collector : string option -> llvalue -> unit = "llvm_set_collector" 93780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 9383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 939dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 940dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 941dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 942dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 943dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 944dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 945dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 946dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 947dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 948dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 949dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 950dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 951dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal param_parent : llvalue -> llvalue = "LLVMGetParamParent" 952dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 9534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 9544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 9554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 9564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 9574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_begin : llvalue -> (llvalue, llvalue) llpos = "llvm_param_begin" 9584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 9604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 9614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 9624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_succ : llvalue -> (llvalue, llvalue) llpos = "llvm_param_succ" 9634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9644733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 9654733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 9664733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 9674733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9684733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 9694733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 9704733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 9714733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9724733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 9734733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 9744733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 9754733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 9764733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_end : llvalue -> (llvalue, llvalue) llrev_pos = "llvm_param_end" 9774733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9784733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 9794733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 9804733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal param_pred : llvalue -> (llvalue, llvalue) llrev_pos 9814733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_param_pred" 9824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 9844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 9854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 9864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 9874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 9884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 9894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 9904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 991dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 9923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 9930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 9953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 99646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 9993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 100046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 10010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 10033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 100446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 10050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [append_block name f] creates a new basic block named [name] at the end of 10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen function [f]. 10083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 100946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal append_block : string -> llvalue -> llbasicblock = "llvm_append_block" 10100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [insert_block name bb] creates a new basic block named [name] before the 10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen basic block [bb]. 10133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 101446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal insert_block : string -> llbasicblock -> llbasicblock 101546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 10160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1017dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1018dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1019dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal block_parent : llbasicblock -> llvalue = "LLVMGetBasicBlockParent" 1020dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 10214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 10224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 10234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 10244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 10254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_begin : llvalue -> (llvalue, llbasicblock) llpos 10264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_begin" 10274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 10294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 10304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 10314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 10324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_succ" 10334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 10354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 10364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 10374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 10394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 10404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 10414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 10434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 10444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 10454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 10464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 10474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_end" 10484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_pred gv] returns the function list position preceding [After gv]. 10504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 10514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenexternal block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 10524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen = "llvm_block_pred" 10534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 10554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 10564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 10574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 10594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 10604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 10614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 10623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 106346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 10640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 10673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 106846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 10690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 107146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 107246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1073cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1074dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1075dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1076dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1077dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1078dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal instr_parent : llvalue -> llbasicblock = "LLVMGetInstructionParent" 1079dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1080033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1081033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1082033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1083033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1084033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1085033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_begin" 1086033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1087033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1088033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1089033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1090033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_succ" 1091033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1092033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1093033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1094033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1095033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1096033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1097033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1098033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1099033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1100033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1101033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1102033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1103033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1104033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1105033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_end" 1106033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1107033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1108033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1109033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1110033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_instr_pred" 1111033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1112033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1113033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1114033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1115033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1116dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 11183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 11203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 11213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 11223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1123cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal instruction_call_conv: llvalue -> int 1124cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_instruction_call_conv" 1125cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1126dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1127dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1128dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1129dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 11303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1131cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksenexternal set_instruction_call_conv: int -> llvalue -> unit 1132cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen = "llvm_set_instruction_call_conv" 1133cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 11343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 11360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 11383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 11392618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 11402618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 11410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 11433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 11442618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 11452618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 114646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 11473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 11490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1150dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [builder ()] creates an instruction builder with no position. It is invalid 1151dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen to use this builder until its position is set with {!position_before} or 11523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!position_at_end}. See the constructor for [llvm::LLVMBuilder]. *) 1153033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal builder : unit -> llbuilder = "llvm_builder" 1154033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1155033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1156033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1157033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_at : (llbasicblock, llvalue) llpos -> llbuilder 1158a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 11603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 1161033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_before : llvalue -> llbuilder 11620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 11643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 1165033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval builder_at_end : llbasicblock -> llbuilder 1166033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1167033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1168033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1169033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1170033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenexternal position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1171033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen = "llvm_position_builder" 11720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 11743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1175033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 11760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 11783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1179033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 118046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1181dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1182dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1183dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1184dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1185dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksenexternal insertion_block : llbuilder -> llbasicblock = "llvm_insertion_block" 1186dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 11890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 11910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 11920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 119446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 11950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 11970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 11980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 120046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 12010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 12030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %bb] 12040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 120646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 12070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 12090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %cond, %tbb, %fbb] 12100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 121246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 121346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 12140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_switch case elsebb b] creates an empty 12160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 12170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 121946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 122046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 12210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 12230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 12240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 122646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 122746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 122846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 12290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an 12310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unwind] 12320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 123446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind" 12350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 12370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 12380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 124046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 124146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 12423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 12440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 12460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 12470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 124946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 125046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 12510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 12530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 12540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 125646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 125746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 12580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 12600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 12610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 126346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 126446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 12650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 12670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 12680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 127046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 127146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 12720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 12740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 12750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 127746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 127846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 12790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 12810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 12820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 128446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 128546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 12860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 12880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 12890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 129146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 129246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 12930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 12950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 12960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 129846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 129946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 13000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 13020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 13030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 130546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 130646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 13070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 13090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 13100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 131246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 131346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 13140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 13160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 13170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 131946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 132046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 13210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 13230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 13240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 132646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 132746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 13280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 13300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 13310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 133346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 133446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 13350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 13370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 13380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 134046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 134146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 13420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 13440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 13450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 134746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 134846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 13490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 13510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 13520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 13543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 135546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 135646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 13570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 13590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 13600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 13623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 136346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 136446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 136546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 13680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_malloc ty name b] creates a 13700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty] 13710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 137346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_malloc : lltype -> string -> llbuilder -> llvalue 137446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_malloc" 13750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_malloc ty n name b] creates a 13770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty, %n] 13780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMalloc]. *) 138046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder -> 138146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_malloc" 13820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 13840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 13850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 138746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 138846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 13890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 13910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 13920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 13933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 139446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 139546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 13960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_free v b] creates a 13980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [free %v] 13990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFree]. *) 140146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free" 14020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 14040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 14050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 140746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 140846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 14090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 14110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 14120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 141446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 141546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 14160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1417632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 14180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = gep %p, indices...] 14190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 142146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 142246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 142346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 14243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 14253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 14260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 14280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 14290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 143146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 143246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 14330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 14350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 14360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 143846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 143946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 14400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 14420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 14430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 144546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 144646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 14470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 14490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 14500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 145246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 145346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 14540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 14560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 14570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 145946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 146046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 14610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 14630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 14640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 146646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 146746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 14680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 14700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 14710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 147346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 147446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 14750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 14770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 14780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 148046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 148146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 14820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 14840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 14850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 148746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 148846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 14890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 14910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 14920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 14933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 149446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 149546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 14960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 14980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 14990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 150146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 150246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 15030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 15050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 15060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBitcast]. *) 150846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 150946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 151046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 15130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 15150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 15160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 1518404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 151946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 15200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 15220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 15230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 1525404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenexternal build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 152646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 152746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 15283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 15300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 15320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 15330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 1534a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 15353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 15362618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 15372618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 15380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 15400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 15410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 154346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 154446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 15450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 15470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 15480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 155046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 155146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 15520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 15540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 15550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 155746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 155846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 15590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 15610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 15620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 156446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 156546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 15660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 15680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 15690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 157146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 157246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 15730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 15750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 15760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 15773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 157846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 157946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 15801ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 15811ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 15823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Module providers} *) 15831ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 1584da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule ModuleProvider : sig 1585da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [create_module_provider m] encapsulates [m] in a module provider and takes 15863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen ownership of the module. See the constructor 15873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::ExistingModuleProvider::ExistingModuleProvider]. *) 1588da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external create : llmodule -> llmoduleprovider 1589da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen = "LLVMCreateModuleProviderForExistingModule" 15903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1591da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [dispose_module_provider mp] destroys the module provider [mp] as well as 15923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the contained module. *) 1593da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmoduleprovider -> unit = "llvm_dispose_module_provider" 1594da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 1595da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 15963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 1598da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1599da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 16003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 16013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 16023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 1603da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_file : string -> llmemorybuffer = "llvm_memorybuffer_of_file" 1604da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 1605da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [stdin ()] is the memory buffer containing the contents of standard input. 16063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 1607da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external of_stdin : unit -> llmemorybuffer = "llvm_memorybuffer_of_stdin" 1608da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 16093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 1610da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen external dispose : llmemorybuffer -> unit = "llvm_memorybuffer_dispose" 1611da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 1612d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1613d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1614d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 1615d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1616d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 1617d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 1618d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 1619d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 1620d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1621d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 1622d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 1623d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 1624d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 1625d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create : unit -> [ `Module ] t = "llvm_passmanager_create" 1626d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1627d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create_function mp] constructs a new function-by-function 1628d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen pass pipeline over the module provider [mp]. It does not take ownership of 1629d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen [mp]. This type of pipeline is suitable for code generation and JIT 1630d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen compilation tasks. 1631d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 1632d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external create_function : llmoduleprovider -> [ `Function ] t 1633d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "LLVMCreateFunctionPassManager" 1634d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1635d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 1636d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 1637d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 1638d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 1639d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_module : llmodule -> [ `Module ] t -> bool 1640d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_module" 1641d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1642d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 1643d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 1644d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 1645d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 1646d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external initialize : [ `Function ] t -> bool = "llvm_passmanager_initialize" 1647d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1648d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 1649d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 1650d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 1651d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 1652d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external run_function : llvalue -> [ `Function ] t -> bool 1653d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen = "llvm_passmanager_run_function" 1654d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1655d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 1656d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 1657d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 1658d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 1659d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external finalize : [ `Function ] t -> bool = "llvm_passmanager_finalize" 1660d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 1661d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 1662d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module provider. 1663d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 1664d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen external dispose : [< any ] t -> unit = "llvm_passmanager_dispose" 1665d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 1666