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