llvm.mli revision 57cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71
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 431ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** Used to provide a module to JIT or interpreter. **) 441ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksentype llmoduleprovider 451ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [llvm::Type::TypeID] enumeration. **) 488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype type_kind = 498ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen Void_type 508ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Float_type 518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Double_type 528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| X86fp80_type 538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Fp128_type 548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Ppc_fp128_type 558ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Label_type 568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Integer_type 578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Function_type 588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Struct_type 598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Array_type 600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen| Pointer_type 618ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Opaque_type 628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Vector_type 638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linkage of a global value, accessed with [linkage gv] and 650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [set_linkage l gv]. See [llvm::GlobalValue::LinkageTypes]. **) 668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype linkage = 678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen External_linkage 688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Link_once_linkage 698ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Weak_linkage 708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Appending_linkage 718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Internal_linkage 728ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Dllimport_linkage 738ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Dllexport_linkage 748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| External_weak_linkage 758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Ghost_linkage 768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The linker visibility of a global value, accessed with [visibility gv] and 780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [set_visibility v gv]. See [llvm::GlobalValue::VisibilityTypes]. **) 798ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype visibility = 808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen Default_visibility 818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Hidden_visibility 828ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen| Protected_visibility 838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(* The following calling convention values may be accessed with 850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_call_conv f] and [set_function_call_conv conv f]. Calling 860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen conventions are open-ended. *) 870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval ccc : int (** [ccc] is the C calling convention. **) 880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval fastcc : int (** [fastcc] is the calling convention to allow LLVM 890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen internal linkage. **) 910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval coldcc : int (** [coldcc] is the calling convention for 920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen callee-save. **) 930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_stdcallcc : int (** [x86_stdcallcc] is the familiar stdcall calling 940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen convention from C. **) 950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval x86_fastcallcc : int (** [x86_fastcallcc] is the familiar fastcall calling 960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen convention from C. **) 9746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. **) 10046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype int_predicate = 10146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Icmp_eq 10246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ne 10346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ugt 10446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_uge 10546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ult 10646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_ule 10746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sgt 10846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sge 10946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_slt 11046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Icmp_sle 11146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 1130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. **) 11446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype real_predicate = 11546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen Fcmp_false 11646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_oeq 11746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ogt 11846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_oge 11946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_olt 12046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ole 12146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_one 12246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ord 12346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_uno 12446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ueq 12546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ugt 12646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_uge 12746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ult 12846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_ule 12946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_une 13046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen| Fcmp_true 13146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Modules -----------------------------------------------------------===*) 1348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [create_module id] creates a module with the supplied module ID. Modules are 1360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen not garbage collected; it is mandatory to call [dispose_module m] to free 1370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen memory. See the constructor [llvm::Module::Module]. *) 1388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal create_module : string -> llmodule = "llvm_create_module" 1398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 1410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 1420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 1430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [llvm::Module::~Module]. **) 1448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal dispose_module : llmodule -> unit = "llvm_dispose_module" 1458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_type_name name ty m] adds a named type to the module's symbol table. 1470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Returns [true] if successful. If such a name already exists, then no entry 1480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen is added and [false] is returned. See the [llvm::Module::addTypeName] 1490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen method. **) 15046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_type_name : string -> lltype -> llmodule -> bool 15146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_add_type_name" 15246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_type_name name] removes a type name from the module's symbol 1540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen table. *) 15546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_type_name : string -> llmodule -> unit 15646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_delete_type_name" 1578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1588ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1598ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Types -------------------------------------------------------------===*) 1600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [classify_type ty] returns the [type_kind] corresponding to the type [ty]. 1620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Type::getTypeID]. **) 1638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal classify_type : lltype -> type_kind = "llvm_classify_type" 1640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. **) 1668ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 1678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on integer types ........................................--*) 1690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 1-bit integer type. See [llvm::Type::Int1Ty]. **) 1710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i1_type : lltype 1720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 8-bit integer type. See [llvm::Type::Int8Ty]. **) 1740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenval i8_type : lltype 1750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 16-bit integer type. See [llvm::Type::Int16Ty]. **) 1778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i16_type : lltype 1780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 32-bit integer type. See [llvm::Type::Int32Ty]. **) 1808ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i32_type : lltype 1810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The 64-bit integer type. See [llvm::Type::Int64Ty]. **) 1838ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval i64_type : lltype 1840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_type n] returns an integer type of bitwidth [n]. 1860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::IntegerType::get]. **) 187957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal integer_type : int -> lltype = "llvm_integer_type" 1880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [integer_bitwidth ty] returns the number of bits in the integer type [ty].. 1900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::IntegerType::getBitWidth]. **) 1918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal integer_bitwidth : lltype -> int = "llvm_integer_bitwidth" 1928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1938ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on real types ...........................................--*) 1940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 32-bit floating point type. See [llvm::Type::FloatTy]. **) 1968ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval float_type : lltype 1970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 64-bit floating point type. See [llvm::Type::DoubleTy]. **) 1998ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval double_type : lltype 2000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The x87 80-bit floating point type. See [llvm::Type::X86_FP80Ty]. **) 2028ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval x86fp80_type : lltype 2030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The IEEE 128-bit floating point type. See [llvm::Type::FP128Ty]. **) 2058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval fp128_type : lltype 2060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The PowerPC 128-bit floating point type. See [llvm::Type::PPC_FP128Ty]. **) 2088ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval ppc_fp128_type : lltype 2098ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on function types .......................................--*) 2110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 2130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 2140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::FunctionType::get]. **) 215957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal function_type : lltype -> lltype array -> lltype = "llvm_function_type" 2160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [va_arg_function_type ret_ty param_tys] is just like 2180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 2190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 2200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::FunctionType::get]. **) 221957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal var_arg_function_type : lltype -> lltype array -> lltype 222957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksen = "llvm_var_arg_function_type" 2230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 2250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. **) 2268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_var_arg : lltype -> bool = "llvm_is_var_arg" 2270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 2290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. **) 230d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal return_type : lltype -> lltype = "LLVMGetReturnType" 2310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 2330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::FunctionType::getParamType]. **) 2348ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal param_types : lltype -> lltype array = "llvm_param_types" 2358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2368ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on struct types .........................................--*) 2370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the structure type containing in the types in the 2390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen array [tys]. See the method [llvm::StructType::get]. **) 240957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal struct_type : lltype array -> lltype = "llvm_struct_type" 2410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [struct_type tys] returns the packed structure type containing in the types 2430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen in the array [tys]. See the method [llvm::StructType::get]. **) 244957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal packed_struct_type : lltype array -> lltype = "llvm_packed_struct_type" 2450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_types sty] returns the constituent types of the struct type [sty]. 2470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::StructType::getElementType]. **) 2488ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal element_types : lltype -> lltype array = "llvm_element_types" 2490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 2510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. **) 2528ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_packed : lltype -> bool = "llvm_is_packed" 2538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2548ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on pointer, vector, and array types .....................--*) 2550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 2570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. **) 258957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal array_type : lltype -> int -> lltype = "llvm_array_type" 2590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 26157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 26257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen See the method [llvm::PointerType::getUnqual]. **) 26357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal pointer_type : lltype -> lltype = "llvm_pointer_type" 26457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 26557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 26657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 26757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen See the method [llvm::PointerType::get]. **) 26857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal qualified_pointer_type : lltype -> int -> lltype 26957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen = "llvm_qualified_pointer_type" 2700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 2720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. **) 273957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal vector_type : lltype -> int -> lltype = "llvm_vector_type" 2748ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 2760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. **) 277d8be2154b38ea623f2320b26c9e1a40be0d0206bGordon Henriksenexternal element_type : lltype -> lltype = "LLVMGetElementType" 2780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 2800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. **) 2818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal array_length : lltype -> int = "llvm_array_length" 2820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 28357cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 28457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. **) 28557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksenexternal address_space : lltype -> int = "llvm_address_space" 28657cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 2870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 2880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::VectorType::getNumElements]. **) 2898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal vector_size : lltype -> int = "llvm_vector_size" 2908ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 2918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on other types ..........................................--*) 2920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [opaque_type ()] creates a new opaque type distinct from any other. 2940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Opaque types are useful for building recursive types in combination with 2950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [refine_type opaque_ty ty]. 2960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See [llvm::OpaqueType::get]. **) 297957f9fe1cce0957bcde4a1093da83e17aaec6764Gordon Henriksenexternal opaque_type : unit -> lltype = "llvm_opaque_type" 2980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [void_type] is the type of a function which does not return any value. 3000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See [llvm::Type::VoidTy]. **) 3018ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval void_type : lltype 3020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [label_type] is the type of a basic block. See [llvm::Type::LabelTy]. **) 3048ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval label_type : lltype 3058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3061cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen(*--... Operations on type handles .........................................--*) 3070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later 3090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen refined as a result of a call to [refine_type], the handle will be updated; 3100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen any bare [lltype] references will become invalid. 3110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the class [llvm::PATypeHolder]. **) 3121cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" 3130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of_handle tyh] resolves the type handle [tyh]. 3150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::PATypeHolder::get()]. **) 3161cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" 3170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the 3190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen concrete type [ty] in all users. Warning: This may invalidate [lltype] 3200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen values! Use [lltypehandle] to manipulate potentially abstract types. See the 3210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen method [llvm::Type::refineAbstractType]. **) 3221cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksenexternal refine_type : lltype -> lltype -> unit = "llvm_refine_type" 3231cf08fddc7413076dedad58dbb8d8d67e69a490fGordon Henriksen 3248ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3258ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*===-- Values ------------------------------------------------------------===*) 3260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 3280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Value::getType]. **) 3298ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal type_of : llvalue -> lltype = "llvm_type_of" 3300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 3320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 3330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 3340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Value::getName]. **) 3358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal value_name : llvalue -> string = "llvm_value_name" 3360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 3380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [llvm::Value::setName]. **) 3398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_value_name : string -> llvalue -> unit = "llvm_set_value_name" 3400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 3420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen error. See the method [llvm::Value::dump]. **) 34388cc699942f7f972ef9bc3afa1df0a44d059e1d8Gordon Henriksenexternal dump_value : llvalue -> unit = "llvm_dump_value" 3448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3458ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on constants of (mostly) any type .......................--*) 3460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 3480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. **) 349344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_constant : llvalue -> bool = "llvm_is_constant" 3500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 3520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Constant::getNullValue]. **) 353e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_null : lltype -> llvalue = "LLVMConstNull" 3540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 3560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. **) 357e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_all_ones : (*int|vec*)lltype -> llvalue = "LLVMConstAllOnes" 3580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 3600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::UndefValue::get]. **) 361e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal undef : lltype -> llvalue = "LLVMGetUndef" 3620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 3640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Constant::isNullValue]. **) 3658ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_null : llvalue -> bool = "llvm_is_null" 3660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 3680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. **) 369344be5fbecec9908bab611eafeae0549ba3be6d7Gordon Henriksenexternal is_undef : llvalue -> bool = "llvm_is_undef" 3708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on scalar constants .....................................--*) 3720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 3740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantInt::get]. **) 375e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_int : lltype -> int -> llvalue = "llvm_const_int" 3760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 3780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. **) 379e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_of_int64 : lltype -> Int64.t -> bool -> llvalue 380e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_of_int64" 3810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 3830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen value [n]. See the method [llvm::ConstantInt::get]. **) 384e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_float : lltype -> float -> llvalue = "llvm_const_float" 3858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3868ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on composite constants ..................................--*) 3870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_string s] returns the constant [i8] array with the values of the 3890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s]. The array is not null-terminated (but see 3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [const_stringz]). This value can in turn be used as the initializer for a 3910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen global variable. See the method [llvm::ConstantArray::get]. **) 392e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_string : string -> llvalue = "llvm_const_string" 3930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_stringz s] returns the constant [i8] array with the values of the 3950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen characters in the string [s] and a null terminator. This value can in turn 3960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen be used as the initializer for a global variable. 3970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantArray::get]. **) 398e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_stringz : string -> llvalue = "llvm_const_stringz" 3990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 4010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 4020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 4030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantArray::get]. **) 404e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_array : lltype -> llvalue array -> llvalue = "llvm_const_array" 4050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_struct elts] returns the structured constant of type 4070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [struct_type (Array.map type_of elts)] and containing the values [elts]. 4080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 4090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantStruct::get]. **) 410e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_struct : llvalue array -> llvalue = "llvm_const_struct" 4110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_packed_struct elts] returns the structured constant of type 4130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [packed_struct_type (Array.map type_of elts)] and containing the values 4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [elts]. This value can in turn be used as the initializer for a global 4150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen variable. See the method [llvm::ConstantStruct::get]. **) 416e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_packed_struct : llvalue array -> llvalue 417e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksen = "llvm_const_packed_struct" 4180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 4200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 4210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. **) 422e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal const_vector : llvalue array -> llvalue = "llvm_const_vector" 4238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4244647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen(*--... Constant expressions ...............................................--*) 4250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 4270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 4280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen (const_int i64_type 1)) i64_type], but considerably more readable. 4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. **) 430e3b989d4a4ba47f77d5d38c35ff17e9673d9f87bGordon Henriksenexternal size_of : lltype -> llvalue = "LLVMSizeOf" 4310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 4330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. **) 4344647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_neg : llvalue -> llvalue = "LLVMConstNeg" 4350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 4370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. **) 4384647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_not : llvalue -> llvalue = "LLVMConstNot" 4390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 4410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. **) 4424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_add : llvalue -> llvalue -> llvalue = "LLVMConstAdd" 4430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 4450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. **) 4464647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sub : llvalue -> llvalue -> llvalue = "LLVMConstSub" 4470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 4490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. **) 4504647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_mul : llvalue -> llvalue -> llvalue = "LLVMConstMul" 4510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 4530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 4540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. **) 4554647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_udiv : llvalue -> llvalue -> llvalue = "LLVMConstUDiv" 4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 4580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 4590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::]. **) 4604647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sdiv : llvalue -> llvalue -> llvalue = "LLVMConstSDiv" 4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 4630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 4640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. **) 4654647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fdiv : llvalue -> llvalue -> llvalue = "LLVMConstFDiv" 4660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant remainder [c1 MOD c2] of two 4680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 4690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. **) 4704647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_urem : llvalue -> llvalue -> llvalue = "LLVMConstURem" 4710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant remainder [c1 MOD c2] of two 4730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 4740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. **) 4754647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_srem : llvalue -> llvalue -> llvalue = "LLVMConstSRem" 4760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 4780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 4790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. **) 4804647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_frem : llvalue -> llvalue -> llvalue = "LLVMConstFRem" 4810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 4830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 4840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. **) 4854647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_and : llvalue -> llvalue -> llvalue = "LLVMConstAnd" 4860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 4880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 4890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. **) 4904647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_or : llvalue -> llvalue -> llvalue = "LLVMConstOr" 4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 4930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 4940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. **) 4954647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_xor : llvalue -> llvalue -> llvalue = "LLVMConstXor" 4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 4980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 4990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. **) 5004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_icmp : int_predicate -> llvalue -> llvalue -> llvalue 5014647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_icmp" 5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 5040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 5050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. **) 5064647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fcmp : real_predicate -> llvalue -> llvalue -> llvalue 5074647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "llvm_const_fcmp" 5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 5100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. **) 5124647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shl : llvalue -> llvalue -> llvalue = "LLVMConstShl" 5130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 5160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. **) 5174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_lshr : llvalue -> llvalue -> llvalue = "LLVMConstLShr" 5180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 5200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 5210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. **) 5224647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ashr : llvalue -> llvalue -> llvalue = "LLVMConstAShr" 5230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 5250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. **) 5274647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_gep : llvalue -> llvalue array -> llvalue = "llvm_const_gep" 5280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 5300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 5310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. **) 5324647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_trunc : llvalue -> lltype -> llvalue = "LLVMConstTrunc" 5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 5360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. **) 5374647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sext : llvalue -> lltype -> llvalue = "LLVMConstSExt" 5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 5400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 5410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. **) 5424647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_zext : llvalue -> lltype -> llvalue = "LLVMConstZExt" 5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 5450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 5460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. **) 5474647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptrunc : llvalue -> lltype -> llvalue = "LLVMConstFPTrunc" 5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 5500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 5510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. **) 5524647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fpext : llvalue -> lltype -> llvalue = "LLVMConstFPExt" 5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 5550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 5560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. **) 5574647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_uitofp : llvalue -> lltype -> llvalue = "LLVMConstUIToFP" 5580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 5600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 5610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. **) 5624647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_sitofp : llvalue -> lltype -> llvalue = "LLVMConstSIToFP" 5630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 5650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 5660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. **) 5674647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptoui : llvalue -> lltype -> llvalue = "LLVMConstFPToUI" 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 5700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. **) 5724647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_fptosi : llvalue -> lltype -> llvalue = "LLVMConstFPToSI" 5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 5750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. **) 5774647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_ptrtoint : llvalue -> lltype -> llvalue = "LLVMConstPtrToInt" 5780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 5800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 5810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. **) 5824647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_inttoptr : llvalue -> lltype -> llvalue = "LLVMConstIntToPtr" 5830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 5850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 5860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. **) 5874647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_bitcast : llvalue -> lltype -> llvalue = "LLVMConstBitCast" 5880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 5900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 5910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. **) 5924647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_select : llvalue -> llvalue -> llvalue -> llvalue 5934647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstSelect" 5940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 5960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 5970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 5980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. **) 5994647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_extractelement : llvalue -> llvalue -> llvalue 6004647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstExtractElement" 6010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 6030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 6040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 6050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 6060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 6070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. **) 6084647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 6094647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstInsertElement" 6100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 6120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the LLVM Language Reference for details on the [sufflevector] 6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 6140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. **) 6154647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksenexternal const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 6164647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen = "LLVMConstShuffleVector" 6174647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 6188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables, functions, and aliases (globals) ...--*) 6190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 6210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 6220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. **) 6238ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_declaration : llvalue -> bool = "llvm_is_declaration" 6240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 6260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. **) 6278ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal linkage : llvalue -> linkage = "llvm_linkage" 6280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 6300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. **) 6318ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_linkage : linkage -> llvalue -> unit = "llvm_set_linkage" 6320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 6340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::getSection]. **) 6358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal section : llvalue -> string = "llvm_section" 6360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 6380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::setSection]. **) 6398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_section : string -> llvalue -> unit = "llvm_set_section" 6400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 6420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. **) 6438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal visibility : llvalue -> visibility = "llvm_visibility" 6440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 6460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. **) 6478ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_visibility : visibility -> llvalue -> unit = "llvm_set_visibility" 6480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 6500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. **) 6518ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal alignment : llvalue -> int = "llvm_alignment" 6520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 6540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. **) 6558ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_alignment : int -> llvalue -> unit = "llvm_set_alignment" 6568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen(*--... Operations on global variables .....................................--*) 6580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 6600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a global variable already exists, 6610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing global differs, then a bitcast 6620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to [ty] is returned. **) 6638ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal declare_global : lltype -> string -> llmodule -> llvalue 6648ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_declare_global" 6650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 6670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer [init] in module [m]. If the named global already exists, it is 6680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. 6690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the constructor of [llvm::GlobalVariable]. **) 6708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal define_global : string -> llvalue -> llmodule -> llvalue 6718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen = "llvm_define_global" 6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 6740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 6750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the [llvm::GlobalVariable] constructor. **) 6766d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_global : string -> llmodule -> llvalue option 6776d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_global" 6780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 6800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. **) 6818ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal delete_global : llvalue -> unit = "llvm_delete_global" 6820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 6840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 6850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. **) 6860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal is_global_constant : llvalue -> bool = "llvm_is_global_constant" 6870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 6890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 6900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. **) 6910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal set_global_constant : bool -> llvalue -> unit 6920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen = "llvm_set_global_constant" 6930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [has_initializer gv] returns [true] if the global variable [gv] has an 6950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen initializer and [false] otherwise. 6960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::hasInitializer]. **) 6970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksenexternal has_initializer : llvalue -> bool = "llvm_has_initializer" 6980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 7000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. **) 70146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal global_initializer : llvalue -> llvalue = "LLVMGetInitializer" 7020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 7040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 7050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. **) 7068ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_initializer : llvalue -> llvalue -> unit = "llvm_set_initializer" 7070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 7090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 7100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. **) 7118ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal remove_initializer : llvalue -> unit = "llvm_remove_initializer" 7120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 7140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 7150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. **) 7168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal is_thread_local : llvalue -> bool = "llvm_is_thread_local" 7170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 7190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 7200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. **) 7218ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenexternal set_thread_local : bool -> llvalue -> unit = "llvm_set_thread_local" 7228ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 72346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on functions ............................................--*) 7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 7260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 7270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 7280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to [ty] is returned. **) 72946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal declare_function : string -> lltype -> llmodule -> llvalue 73046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_declare_function" 7310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 7330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 7350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the constructor of [llvm::GlobalVariable]. **) 73646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal define_function : string -> lltype -> llmodule -> llvalue 73746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_define_function" 7380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 7400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 7410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Module] constructor. **) 7426d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksenexternal lookup_function : string -> llmodule -> llvalue option 7436d6203dff3560a2cc3ac8ec620ac3b105b0c7cc7Gordon Henriksen = "llvm_lookup_function" 7440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 7460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::eraseFromParent]. **) 74746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_function : llvalue -> unit = "llvm_delete_function" 7480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [params f] returns the parameters of function [f]. 7500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::getArgumentList]. **) 75146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal params : llvalue -> llvalue array = "llvm_params" 7520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::getArgumentList]. **) 75546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal param : llvalue -> int -> llvalue = "llvm_param" 7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::isIntrinsic]. **) 75946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal is_intrinsic : llvalue -> bool = "llvm_is_intrinsic" 7600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 7620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::getCallingConv]. **) 76346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal function_call_conv : llvalue -> int = "llvm_function_call_conv" 7640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 7660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 7670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::setCallingConv]. **) 76846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal set_function_call_conv : int -> llvalue -> unit 76946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_set_function_call_conv" 77046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 77180a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [collector f] returns [Some name] if the function [f] has a garbage 77280a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 77380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen See the method [llvm::Function::getCollector]. **) 77480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal collector : llvalue -> string option = "llvm_collector" 77580a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 77680a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen(** [set_collector gc f] sets the collection algorithm for the function [f] to 77780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen [gc]. See the method [llvm::Function::setCollector]. **) 77880a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksenexternal set_collector : string option -> llvalue -> unit = "llvm_set_collector" 77980a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 78046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Operations on basic blocks .........................................--*) 7810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 7830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. **) 78446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal basic_blocks : llvalue -> llbasicblock array = "llvm_basic_blocks" 7850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 7870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::Function::getEntryBlock]. **) 78846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal entry_block : llvalue -> llbasicblock = "LLVMGetEntryBasicBlock" 7890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 7910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. **) 79246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal delete_block : llbasicblock -> unit = "llvm_delete_block" 7930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [append_block name f] creates a new basic block named [name] at the end of 7950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen function [f]. 7960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the constructor of [llvm::BasicBlock]. **) 79746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal append_block : string -> llvalue -> llbasicblock = "llvm_append_block" 7980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [insert_block name bb] creates a new basic block named [name] before the 8000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen basic block [bb]. 8010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the constructor of [llvm::BasicBlock]. **) 80246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal insert_block : string -> llbasicblock -> llbasicblock 80346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_insert_block" 8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. **) 80646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_of_block : llbasicblock -> llvalue = "LLVMBasicBlockAsValue" 8070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 8090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 8100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. **) 81146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal value_is_block : llvalue -> bool = "llvm_value_is_block" 8120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. **) 81446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal block_of_value : llvalue -> llbasicblock = "LLVMValueAsBasicBlock" 81546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 8162618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen(*--... Operations on phi nodes ............................................--*) 8170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. **) 8202618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 8212618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen = "llvm_add_incoming" 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 8240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. **) 8252618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal incoming : llvalue -> (llvalue * llbasicblock) list = "llvm_incoming" 8262618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 82746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 82846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*===-- Instruction builders ----------------------------------------------===*) 8290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. **) 83246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_before : llvalue -> llbuilder = "llvm_builder_before" 8330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 8350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. **) 83646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal builder_at_end : llbasicblock -> llbuilder = "llvm_builder_at_end" 8370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 8390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **) 84046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_before : llvalue -> llbuilder -> unit = "llvm_position_before" 8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 8430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. **) 84446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal position_at_end : llbasicblock -> llbuilder -> unit 84546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_position_at_end" 84646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 84746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Terminators ........................................................--*) 8480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 8500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 8510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. **) 85346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret_void : llbuilder -> llvalue = "llvm_build_ret_void" 8540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 8560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 8570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. **) 85946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ret : llvalue -> llbuilder -> llvalue = "llvm_build_ret" 8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %bb] 8630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. **) 86546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_br : llbasicblock -> llbuilder -> llvalue = "llvm_build_br" 8660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 8680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [b %cond, %tbb, %fbb] 8690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. **) 87146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 87246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_cond_br" 8730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_switch case elsebb b] creates an empty 8750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 8760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. **) 87846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 87946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_switch" 8800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 8820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 8830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. **) 88546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_invoke : llvalue -> llvalue array -> llbasicblock -> 88646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 88746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_invoke_bc" "llvm_build_invoke_nat" 8880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unwind b] creates an 8900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unwind] 8910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. **) 89346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unwind : llbuilder -> llvalue = "llvm_build_unwind" 8940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 8960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 8970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 8980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. **) 89946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_unreachable : llbuilder -> llvalue = "llvm_build_unreachable" 90046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 90146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Arithmetic .........................................................--*) 9020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 9040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 9050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. **) 90746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 90846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_add" 9090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 9110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 9120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. **) 91446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 91546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sub" 9160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 9180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 9190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. **) 92146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 92246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_mul" 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 9250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. **) 92846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 92946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_udiv" 9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 9320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 9330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. **) 93546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 93646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sdiv" 9370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 9390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 9400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. **) 94246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 94346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fdiv" 9440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 9460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 9470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. **) 94946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 95046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_urem" 9510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 9530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 9540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. **) 95646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 95746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_srem" 9580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 9600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 9610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. **) 96346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 96446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_frem" 9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 9670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 9680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. **) 97046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 97146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_shl" 9720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 9740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 9750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. **) 97746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 97846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_lshr" 9790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 9820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. **) 98446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 98546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_ashr" 9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 9880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 9890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. **) 99146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 99246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_and" 9930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 9950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 9960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. **) 99846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 99946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_or" 10000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 10020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 10030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. **) 100546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 100646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_xor" 10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 10090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 10100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. **) 101346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_neg : llvalue -> string -> llbuilder -> llvalue 101446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_neg" 10150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 10170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 10180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. **) 102146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_not : llvalue -> string -> llbuilder -> llvalue 102246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_not" 102346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 102446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Memory .............................................................--*) 10250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_malloc ty name b] creates a 10270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty] 10280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. **) 103046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_malloc : lltype -> string -> llbuilder -> llvalue 103146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_malloc" 10320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_malloc ty n name b] creates a 10340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = malloc %ty, %n] 10350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMalloc]. **) 103746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_malloc : lltype -> llvalue -> string -> llbuilder -> 103846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_malloc" 10390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 10410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 10420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. **) 104446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_alloca : lltype -> string -> llbuilder -> llvalue 104546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_alloca" 10460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 10480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 10490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. **) 105146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 105246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_array_alloca" 10530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_free v b] creates a 10550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [free %v] 10560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFree]. **) 105846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_free : llvalue -> llbuilder -> llvalue = "llvm_build_free" 10590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 10610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 10620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. **) 106446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_load : llvalue -> string -> llbuilder -> llvalue 106546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_load" 10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 10680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 10690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. **) 107146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_store : llvalue -> llvalue -> llbuilder -> llvalue 107246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_store" 10730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store p indices name b] creates a 10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = gep %p, indices...] 10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. **) 107846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 107946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_gep" 108046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 108146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Casts ..............................................................--*) 10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 10840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. **) 108746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 108846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_trunc" 10890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 10910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 10920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 10930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. **) 109446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 109546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_zext" 10960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 10980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 10990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. **) 110146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 110246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sext" 11030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 11050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 11060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. **) 110846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 110946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptoui" 11100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 11120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 11130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. **) 111546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 111646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptosi" 11170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 11190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 11200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. **) 112246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 112346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_uitofp" 11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 11260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 11270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. **) 112946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 113046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_sitofp" 11310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 11330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 11340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. **) 113646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 113746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fptrunc" 11380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 11400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 11410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. **) 114346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 114446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_fpext" 11450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 11470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 11480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. **) 115046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 115146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_prttoint" 11520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 11540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 11550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. **) 115746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 115846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_inttoptr" 11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 11610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 11620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBitcast]. **) 116446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 116546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_bitcast" 116646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 116746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Comparisons ........................................................--*) 11680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 11700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 11710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. **) 117346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_icmp : int_predicate -> llvalue -> llvalue -> string -> 117446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_icmp" 11750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 11780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. **) 118046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_fcmp : real_predicate -> llvalue -> llvalue -> string -> 118146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_fcmp" 118246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 118346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen(*--... Miscellaneous instructions .........................................--*) 11840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 11860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 11870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 11890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. **) 11902618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksenexternal build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 11912618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen llvalue = "llvm_build_phi" 11920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 11940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 11950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. **) 119746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 119846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_call" 11990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 12010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 12020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. **) 120446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 120546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_select" 12060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 12080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 12090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. **) 121146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 121246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen = "llvm_build_va_arg" 12130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 12150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 12160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. **) 121846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 121946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llvalue = "llvm_build_extractelement" 12200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 12220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 12230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. **) 122546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_insertelement : llvalue -> llvalue -> llvalue -> string -> 122646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_insertelement" 12270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 12290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 12300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 12310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. **) 123246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksenexternal build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 123346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbuilder -> llvalue = "llvm_build_shufflevector" 12341ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 12351ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 12361ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(*===-- Module providers --------------------------------------------------===*) 12371ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 12381ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** [create_module_provider m] encapsulates [m] in a module provider and takes 12391ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen ownership of the module. See the constructor 12401ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen [llvm::ExistingModuleProvider::ExistingModuleProvider]. **) 12411ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenexternal create_module_provider : llmodule -> llmoduleprovider 12421ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen = "LLVMCreateModuleProviderForExistingModule" 12431ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 12441ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen(** [dispose_module_provider mp] destroys the module provider [mp] as well as 12451ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen the contained module. **) 12461ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksenexternal dispose_module_provider : llmoduleprovider -> unit 12471ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen = "llvm_dispose_module_provider" 1248