1bbf1c514bd832bf1306fe3e87221fd78bbc306efGordon Henriksen(*===-- llvm/llvm.mli - LLVM Ocaml Interface -------------------------------===* 28ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 38ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * The LLVM Compiler Infrastructure 48ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 5234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * This file is distributed under the University of Illinois Open Source 6234d529e582963ad4b5d83b911cd057fe99d1435Chris Lattner * License. See LICENSE.TXT for details. 78ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen * 88ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen *===----------------------------------------------------------------------===*) 98ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** Core API. 113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen This interface provides an ocaml API for the LLVM intermediate 133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen representation, the classes in the VMCore library. *) 143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 163b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Abstract types} 178ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen These abstract types correlate directly to the LLVM VMCore classes. *) 190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 205371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** The top-level container for all LLVM global data. See the 215371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::LLVMContext] class. *) 225371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaartype llcontext 235371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The top-level container for all other LLVM Intermediate Representation (IR) 253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen objects. See the [llvm::Module] class. *) 268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llmodule 270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Each value in the LLVM IR has a type, an instance of [lltype]. See the 293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type] class. *) 303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksentype lltype 310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Any value in the LLVM IR. Functions, instructions, global variables, 330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, and much more are all [llvalues]. See the [llvm::Value] class. 343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen This type covers a wide range of subclasses. *) 358ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksentype llvalue 360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 37705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** Used to store users and usees of values. See the [llvm::Use] class. *) 38705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaartype lluse 39705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** A basic block in LLVM IR. See the [llvm::BasicBlock] class. *) 410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksentype llbasicblock 420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** Used to generate instructions in the LLVM IR. See the [llvm::LLVMBuilder] 443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen class. *) 4546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksentype llbuilder 468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 47da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen(** Used to efficiently handle large buffers of read-only binary data. 483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::MemoryBuffer] class. *) 49da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksentype llmemorybuffer 50da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type::TypeID] enumeration. *) 53404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind : sig 54404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 55404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Void 56eaf0608891cff27fe4cf08d180a6baf49e00f8aeBob Wilson | Half 57404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Float 58404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Double 59404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | X86fp80 60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Fp128 61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ppc_fp128 62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Label 63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Integer 64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Function 65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Struct 66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Array 67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Pointer 68404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Vector 6932eaeca34fe1e6080a2916e04c89874f0b273e31Bob Wilson | Metadata 70404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 718ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linkage of a global value, accessed with {!linkage} and 733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_linkage}. See [llvm::GlobalValue::LinkageTypes]. *) 74404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig 75404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 76404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen External 7714b9ed13e79d4b8fe97e2215e7ccf095a40463fdNick Lewycky | Available_externally 78404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 794aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Link_once_odr 80404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 814aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Weak_odr 82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 83404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 844aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Private 85404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 86404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 87404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 88404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 894aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Common 904aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Linker_private 91404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 928ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linker visibility of a global value, accessed with {!visibility} and 943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_visibility}. See [llvm::GlobalValue::VisibilityTypes]. *) 95404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig 96404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 97404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Default 98404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 99404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 100404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 1018ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The following calling convention values may be accessed with 1033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!function_call_conv} and {!set_function_call_conv}. Calling 1043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen conventions are open-ended. *) 1051475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv : sig 1063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen val c : int (** [c] is the C calling convention. *) 1071475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val fast : int (** [fast] is the calling convention to allow LLVM 1080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 1093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen internal linkage. *) 1101475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val cold : int (** [cold] is the calling convention for 1113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen callee-save. *) 1121475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_stdcall : int (** [x86_stdcall] is the familiar stdcall calling 1133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1141475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_fastcall : int (** [x86_fastcall] is the familiar fastcall calling 1153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1161475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 11746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 118e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsmodule Attribute : sig 119e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands type t = 120e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Zext 121e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Sext 122e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noreturn 123e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Inreg 124e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Structret 125e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nounwind 126e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noalias 127e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Byval 128e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nest 129e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readnone 130e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readonly 131f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noinline 132f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Alwaysinline 133f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Optsize 134f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Ssp 135f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Sspreq 1360941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Alignment of int 137f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Nocapture 138f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noredzone 139f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noimplicitfloat 140f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Naked 141570a4a5d9ca31f276a67502d1e0533d59d331feaJakob Stoklund Olesen | Inlinehint 1420941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Stackalignment of int 1430be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | ReturnsTwice 1440be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | UWTable 1450be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | NonLazyBind 146e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsend 147e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 1493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. *) 150404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig 151404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 152404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Eq 153404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ne 154404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 155404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 156404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 157404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 158404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sgt 159404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sge 160404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Slt 161404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Sle 162404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 16346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 1653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. *) 166404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig 167404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 168404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | False 169404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oeq 170404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ogt 171404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Oge 172404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Olt 173404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ole 174404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | One 175404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ord 176404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uno 177404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ueq 178404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ugt 179404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Uge 180404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ult 181404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ule 182404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Une 183404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | True 184404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 18546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1866563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin(** The opcodes for LLVM instructions and constant expressions. *) 1876563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinmodule Opcode : sig 1886563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin type t = 1896563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid (* not an instruction *) 1906563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Terminator Instructions *) 1916563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Ret 1926563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Br 1936563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Switch 1946563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IndirectBr 1956563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invoke 1966563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid2 1976563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Unreachable 1986563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Standard Binary Operators *) 1996563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Add 2006563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FAdd 2016563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Sub 2026563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FSub 2036563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Mul 2046563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FMul 2056563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UDiv 2066563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SDiv 2076563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FDiv 2086563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | URem 2096563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SRem 2106563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FRem 2116563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Logical Operators *) 2126563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Shl 2136563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LShr 2146563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AShr 2156563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | And 2166563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Or 2176563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Xor 2186563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Memory Operators *) 2196563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Alloca 2206563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Load 2216563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Store 2226563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | GetElementPtr 2236563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Cast Operators *) 2246563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Trunc 2256563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ZExt 2266563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SExt 2276563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToUI 2286563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToSI 2296563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UIToFP 2306563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SIToFP 2316563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPTrunc 2326563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPExt 2336563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PtrToInt 2346563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IntToPtr 2356563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | BitCast 2366563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Other Operators *) 2376563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ICmp 2386563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FCmp 2396563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PHI 2406563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Call 2416563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Select 2426563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp1 2436563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp2 2446563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | VAArg 2456563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractElement 2466563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertElement 2476563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ShuffleVector 2486563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractValue 2496563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertValue 2506563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Fence 2516563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicCmpXchg 2526563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicRMW 2536563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Resume 2546563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LandingPad 2556563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Unwind 2566563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinend 2576563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin 2583dd16741864302af14b31b7f75375c09d8544a35Torok Edwin(** The kind of an [llvalue], the result of [classify_value v]. 2593dd16741864302af14b31b7f75375c09d8544a35Torok Edwin * See the various [LLVMIsA*] functions. *) 2603dd16741864302af14b31b7f75375c09d8544a35Torok Edwinmodule ValueKind : sig 2613dd16741864302af14b31b7f75375c09d8544a35Torok Edwin type t = 2623dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | NullValue 2633dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Argument 2643dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BasicBlock 2653dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | InlineAsm 2663dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDNode 2673dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDString 2683dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BlockAddress 2693dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantAggregateZero 2703dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantArray 2713dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantExpr 2723dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantFP 2733dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantInt 2743dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantPointerNull 2753dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantStruct 2763dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantVector 2773dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Function 2783dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalAlias 2793dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalVariable 2803dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | UndefValue 2813dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Instruction of Opcode.t 2823dd16741864302af14b31b7f75375c09d8544a35Torok Edwinend 2833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 2844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** {6 Iteration} *) 2854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 2864733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [Before b] and [At_end a] specify positions from the start of the ['b] list 287224fceb41f993fbc954345f053dab4e8caf28329Gordon Henriksen of [a]. [llpos] is used to specify positions in and for forward iteration 2884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen through the various value lists maintained by the LLVM IR. *) 2894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 2904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 2914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 2924733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 2934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [After b] and [At_start a] specify positions from the end of the ['b] list 2944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of [a]. [llrev_pos] is used for reverse iteration through the various value 2954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen lists maintained by the LLVM IR. *) 2964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 2974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 2984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 2994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Exceptions} *) 3023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 303da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 304da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 3058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3065371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** {6 Contexts} *) 3075371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3085371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_context ()] creates a context for storing the "global" state in 3095371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar LLVM. See the constructor [llvm::LLVMContext]. *) 310a156efdf71bc668093e31593713694cf076db895Torok Edwinval create_context : unit -> llcontext 3115371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3125371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [destroy_context ()] destroys a context. See the destructor 3135371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::LLVMContext::~LLVMContext]. *) 314a156efdf71bc668093e31593713694cf076db895Torok Edwinval dispose_context : llcontext -> unit 3155371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3165371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** See the function [llvm::getGlobalContext]. *) 317a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_context : unit -> llcontext 3185371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 31946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdkind_id context name] returns the MDKind ID that corresponds to the 32046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar name [name] in the context [context]. See the function 32146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::LLVMContext::getMDKindID]. *) 322a156efdf71bc668093e31593713694cf076db895Torok Edwinval mdkind_id : llcontext -> string -> int 32346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 3245371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 3268ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3275371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_module context id] creates a module with the supplied module ID in 3285371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. Modules are not garbage collected; it is mandatory 3295371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar to call {!dispose_module} to free memory. See the constructor 3305371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::Module::Module]. *) 331a156efdf71bc668093e31593713694cf076db895Torok Edwinval create_module : llcontext -> string -> llmodule 3328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 3340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 3350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 3363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 337a156efdf71bc668093e31593713694cf076db895Torok Edwinval dispose_module : llmodule -> unit 3388ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 339a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 3403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 341a156efdf71bc668093e31593713694cf076db895Torok Edwinval target_triple: llmodule -> string 342a156efdf71bc668093e31593713694cf076db895Torok Edwin 343a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 344a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 3453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 346a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_target_triple: string -> llmodule -> unit 347a156efdf71bc668093e31593713694cf076db895Torok Edwin 348a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 349a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 350a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 3513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 352a156efdf71bc668093e31593713694cf076db895Torok Edwinval data_layout: llmodule -> string 353a156efdf71bc668093e31593713694cf076db895Torok Edwin 354a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen 355a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 3563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 357a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_data_layout: string -> llmodule -> unit 358a156efdf71bc668093e31593713694cf076db895Torok Edwin 3593c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 3603c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 361a156efdf71bc668093e31593713694cf076db895Torok Edwinval dump_module : llmodule -> unit 3623c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 3630941534c712d77243d9dda5e8c1d927563b4edffChris Lattner(** [set_module_inline_asm m asm] sets the inline assembler for the module. See 3640941534c712d77243d9dda5e8c1d927563b4edffChris Lattner the method [llvm::Module::setModuleInlineAsm]. *) 365a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_module_inline_asm : llmodule -> string -> unit 366a156efdf71bc668093e31593713694cf076db895Torok Edwin 367ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [module_context m] returns the context of the specified module. 368ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * See the method [llvm::Module::getContext] *) 369ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval module_context : llmodule -> llcontext 3708ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 3720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 3733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 3743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 375a156efdf71bc668093e31593713694cf076db895Torok Edwinval classify_type : lltype -> TypeKind.t 3760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 377ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin(** [type_is_sized ty] returns whether the type has a size or not. 378791cfc211a9801002bfda6b3eb4de7e041f04f53Micah Villmow * If it doesn't then it is not safe to call the [DataLayout::] methods on it. 379ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin * *) 380ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwinval type_is_sized : lltype -> bool 381ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin 3825371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [type_context ty] returns the {!llcontext} corresponding to the type [ty]. 3835371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar See the method [llvm::Type::getContext]. *) 384a156efdf71bc668093e31593713694cf076db895Torok Edwinval type_context : lltype -> llcontext 3855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 3878ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 3888ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 3893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 3900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 391b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i1_type c] returns an integer type of bitwidth 1 in the context [c]. See 392b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int1Ty]. *) 393a156efdf71bc668093e31593713694cf076db895Torok Edwinval i1_type : llcontext -> lltype 3940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 395b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i8_type c] returns an integer type of bitwidth 8 in the context [c]. See 396b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int8Ty]. *) 397a156efdf71bc668093e31593713694cf076db895Torok Edwinval i8_type : llcontext -> lltype 3980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 399b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i16_type c] returns an integer type of bitwidth 16 in the context [c]. See 400b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int16Ty]. *) 401a156efdf71bc668093e31593713694cf076db895Torok Edwinval i16_type : llcontext -> lltype 4020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 403b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i32_type c] returns an integer type of bitwidth 32 in the context [c]. See 404b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int32Ty]. *) 405a156efdf71bc668093e31593713694cf076db895Torok Edwinval i32_type : llcontext -> lltype 4060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 407b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i64_type c] returns an integer type of bitwidth 64 in the context [c]. See 408b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int64Ty]. *) 409a156efdf71bc668093e31593713694cf076db895Torok Edwinval i64_type : llcontext -> lltype 4100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 411b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_type c n] returns an integer type of bitwidth [n] in the context 412b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See the method [llvm::IntegerType::get]. *) 413a156efdf71bc668093e31593713694cf076db895Torok Edwinval integer_type : llcontext -> int -> lltype 4140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 415b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_bitwidth c ty] returns the number of bits in the integer type [ty] 416b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar in the context [c]. See the method [llvm::IntegerType::getBitWidth]. *) 417a156efdf71bc668093e31593713694cf076db895Torok Edwinval integer_bitwidth : lltype -> int 4188ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 4213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 422b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [float_type c] returns the IEEE 32-bit floating point type in the context 423b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FloatTy]. *) 424a156efdf71bc668093e31593713694cf076db895Torok Edwinval float_type : llcontext -> lltype 4250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 426b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [double_type c] returns the IEEE 64-bit floating point type in the context 427b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::DoubleTy]. *) 428a156efdf71bc668093e31593713694cf076db895Torok Edwinval double_type : llcontext -> lltype 4290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 430b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [x86fp80_type c] returns the x87 80-bit floating point type in the context 431b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::X86_FP80Ty]. *) 432a156efdf71bc668093e31593713694cf076db895Torok Edwinval x86fp80_type : llcontext -> lltype 4330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 434b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [fp128_type c] returns the IEEE 128-bit floating point type in the context 435b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FP128Ty]. *) 436a156efdf71bc668093e31593713694cf076db895Torok Edwinval fp128_type : llcontext -> lltype 4370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 438b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [ppc_fp128_type c] returns the PowerPC 128-bit floating point type in the 439b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. See [llvm::Type::PPC_FP128Ty]. *) 440a156efdf71bc668093e31593713694cf076db895Torok Edwinval ppc_fp128_type : llcontext -> lltype 4418ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 4440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 4460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 4473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 448a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_type : lltype -> lltype array -> lltype 4490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 45048488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [var_arg_function_type ret_ty param_tys] is just like 4510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 4520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 4533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 454a156efdf71bc668093e31593713694cf076db895Torok Edwinval var_arg_function_type : lltype -> lltype array -> lltype 455a156efdf71bc668093e31593713694cf076db895Torok Edwin 4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 4583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 459a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_var_arg : lltype -> bool 4600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 4623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 463a156efdf71bc668093e31593713694cf076db895Torok Edwinval return_type : lltype -> lltype 4640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 4663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 467a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_types : lltype -> lltype array 4688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 4703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 4710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4725371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [struct_type context tys] returns the structure type in the context 4735371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [context] containing in the types in the array [tys]. See the method 4745371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 475a156efdf71bc668093e31593713694cf076db895Torok Edwinval struct_type : llcontext -> lltype array -> lltype 476a156efdf71bc668093e31593713694cf076db895Torok Edwin 4770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4785371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [packed_struct_type context ys] returns the packed structure type in the 4795371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar context [context] containing in the types in the array [tys]. See the method 4805371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 481a156efdf71bc668093e31593713694cf076db895Torok Edwinval packed_struct_type : llcontext -> lltype array -> lltype 482a156efdf71bc668093e31593713694cf076db895Torok Edwin 483c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin(** [struct_name ty] returns the name of the named structure type [ty], 484c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin * or None if the structure type is not named *) 485c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwinval struct_name : lltype -> string option 486c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin 4876b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [named_struct_type context name] returns the named structure type [name] 4886b228e506f42972c003599f4873a24910f8a530aTorok Edwin * in the context [context]. 4896b228e506f42972c003599f4873a24910f8a530aTorok Edwin * See the method [llvm::StructType::get]. *) 4906b228e506f42972c003599f4873a24910f8a530aTorok Edwinval named_struct_type : llcontext -> string -> lltype 4916b228e506f42972c003599f4873a24910f8a530aTorok Edwin 4926b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [struct_set_body ty elts ispacked] sets the body of the named struct [ty] 4936b228e506f42972c003599f4873a24910f8a530aTorok Edwin * to the [elts] elements. 4946b228e506f42972c003599f4873a24910f8a530aTorok Edwin * See the moethd [llvm::StructType::setBody]. *) 4956b228e506f42972c003599f4873a24910f8a530aTorok Edwinval struct_set_body : lltype -> lltype array -> bool -> unit 4960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4971940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [struct_element_types sty] returns the constituent types of the struct type 4981940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [sty]. See the method [llvm::StructType::getElementType]. *) 499a156efdf71bc668093e31593713694cf076db895Torok Edwinval struct_element_types : lltype -> lltype array 500a156efdf71bc668093e31593713694cf076db895Torok Edwin 5010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 5033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 504a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_packed : lltype -> bool 5058ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5066b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [is_opaque sty] returns [true] if the structure type [sty] is opaque. 5076b228e506f42972c003599f4873a24910f8a530aTorok Edwin [false] otherwise. See the method [llvm::StructType::isOpaque]. *) 5086b228e506f42972c003599f4873a24910f8a530aTorok Edwinval is_opaque : lltype -> bool 5093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 5110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 5133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 514a156efdf71bc668093e31593713694cf076db895Torok Edwinval array_type : lltype -> int -> lltype 5150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 51757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 5183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 519a156efdf71bc668093e31593713694cf076db895Torok Edwinval pointer_type : lltype -> lltype 52057cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 52157cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 52257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 5233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 524a156efdf71bc668093e31593713694cf076db895Torok Edwinval qualified_pointer_type : lltype -> int -> lltype 525a156efdf71bc668093e31593713694cf076db895Torok Edwin 5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 5283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 529a156efdf71bc668093e31593713694cf076db895Torok Edwinval vector_type : lltype -> int -> lltype 5308ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 5323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 533a156efdf71bc668093e31593713694cf076db895Torok Edwinval element_type : lltype -> lltype 5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 5363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 537a156efdf71bc668093e31593713694cf076db895Torok Edwinval array_length : lltype -> int 5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 53957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 5403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 541a156efdf71bc668093e31593713694cf076db895Torok Edwinval address_space : lltype -> int 54257cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 5430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 5443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 545a156efdf71bc668093e31593713694cf076db895Torok Edwinval vector_size : lltype -> int 5468ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 5490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 550b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [void_type c] creates a type of a function which does not return any 551b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value in the context [c]. See [llvm::Type::VoidTy]. *) 552a156efdf71bc668093e31593713694cf076db895Torok Edwinval void_type : llcontext -> lltype 5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 554b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [label_type c] creates a type of a basic block in the context [c]. See 555b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::LabelTy]. *) 556a156efdf71bc668093e31593713694cf076db895Torok Edwinval label_type : llcontext -> lltype 5578ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 558ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [type_by_name m name] returns the specified type from the current module 559ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * if it exists. 560ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * See the method [llvm::Module::getTypeByName] *) 561ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval type_by_name : llmodule -> string -> lltype option 562ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 5633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 5640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 5663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 567a156efdf71bc668093e31593713694cf076db895Torok Edwinval type_of : llvalue -> lltype 5680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5693dd16741864302af14b31b7f75375c09d8544a35Torok Edwinval classify_value : llvalue -> ValueKind.t 5703dd16741864302af14b31b7f75375c09d8544a35Torok Edwin 5710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 5720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 5730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 5743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 575a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_name : llvalue -> string 5760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 5783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 579a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_value_name : string -> llvalue -> unit 5800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 5823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 583a156efdf71bc668093e31593713694cf076db895Torok Edwinval dump_value : llvalue -> unit 5848ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 58568bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaar(** [replace_all_uses_with old new] replaces all uses of the value [old] 58668bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaar * with the value [new]. See the method [llvm::Value::replaceAllUsesWith]. *) 587a156efdf71bc668093e31593713694cf076db895Torok Edwinval replace_all_uses_with : llvalue -> llvalue -> unit 588a156efdf71bc668093e31593713694cf076db895Torok Edwin 58968bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaar 5903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 591705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(* {6 Uses} *) 592705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 593705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [use_begin v] returns the first position in the use list for the value [v]. 594705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [use_begin] and [use_succ] can e used to iterate over the use list in order. 595705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Value::use_begin]. *) 596a156efdf71bc668093e31593713694cf076db895Torok Edwinval use_begin : llvalue -> lluse option 597705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 598705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [use_succ u] returns the use list position succeeding [u]. 599705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::use_value_iterator::operator++]. *) 600a156efdf71bc668093e31593713694cf076db895Torok Edwinval use_succ : lluse -> lluse option 601705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 602705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [user u] returns the user of the use [u]. 603705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Use::getUser]. *) 604a156efdf71bc668093e31593713694cf076db895Torok Edwinval user : lluse -> llvalue 605705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 606705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [used_value u] returns the usee of the use [u]. 607705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Use::getUsedValue]. *) 608a156efdf71bc668093e31593713694cf076db895Torok Edwinval used_value : lluse -> llvalue 609705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 610705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [iter_uses f v] applies function [f] to each of the users of the value [v] 611705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar in order. Tail recursive. *) 612705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval iter_uses : (lluse -> unit) -> llvalue -> unit 613705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 614705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [fold_left_uses f init v] is [f (... (f init u1) ...) uN] where 615705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [u1,...,uN] are the users of the value [v]. Tail recursive. *) 616705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval fold_left_uses : ('a -> lluse -> 'a) -> 'a -> llvalue -> 'a 617705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 618705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [fold_right_uses f v init] is [f u1 (... (f uN init) ...)] where 619705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [u1,...,uN] are the users of the value [v]. Not tail recursive. *) 620705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval fold_right_uses : (lluse -> 'a -> 'a) -> llvalue -> 'a -> 'a 621705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 622705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 623b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar(* {6 Users} *) 624b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 625b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar(** [operand v i] returns the operand at index [i] for the value [v]. See the 626b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar method [llvm::User::getOperand]. *) 627a156efdf71bc668093e31593713694cf076db895Torok Edwinval operand : llvalue -> int -> llvalue 628b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 629f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar(** [set_operand v i o] sets the operand of the value [v] at the index [i] to 630f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar the value [o]. 631f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar See the method [llvm::User::setOperand]. *) 632a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_operand : llvalue -> int -> llvalue -> unit 633f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar 634f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar(** [num_operands v] returns the number of operands for the value [v]. 635f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar See the method [llvm::User::getNumOperands]. *) 636a156efdf71bc668093e31593713694cf076db895Torok Edwinval num_operands : llvalue -> int 637b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 6383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 6413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 642a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_constant : llvalue -> bool 6430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 6453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 646a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_null : lltype -> llvalue 6470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 6493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 650a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_all_ones : (*int|vec*)lltype -> llvalue 6510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6525b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar(** [const_pointer_null ty] returns the constant null (zero) pointer of the type 6535b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar [ty]. See the method [llvm::ConstantPointerNull::get]. *) 654a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_pointer_null : lltype -> llvalue 6555b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar 6560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 6573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 658a156efdf71bc668093e31593713694cf076db895Torok Edwinval undef : lltype -> llvalue 6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 6613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 662a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_null : llvalue -> bool 6630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 6653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 666a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_undef : llvalue -> bool 6678ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6686563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval constexpr_opcode : llvalue -> Opcode.t 66946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on instructions} *) 67046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 67146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [has_metadata i] returns whether or not the instruction [i] has any 67246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar metadata attached to it. See the function 67346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::hasMetadata]. *) 674a156efdf71bc668093e31593713694cf076db895Torok Edwinval has_metadata : llvalue -> bool 67546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 67646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [metadata i kind] optionally returns the metadata associated with the 67746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar kind [kind] in the instruction [i] See the function 67846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::getMetadata]. *) 679a156efdf71bc668093e31593713694cf076db895Torok Edwinval metadata : llvalue -> int -> llvalue option 68046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 68146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_metadata i kind md] sets the metadata [md] of kind [kind] in the 68246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 683a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_metadata : llvalue -> int -> llvalue -> unit 68446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 68546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_metadata i kind] clears the metadata of kind [kind] in the 68646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 687a156efdf71bc668093e31593713694cf076db895Torok Edwinval clear_metadata : llvalue -> int -> unit 68846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 68946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 69046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on metadata} *) 69146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 69246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdstring c s] returns the MDString of the string [s] in the context [c]. 69346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 694a156efdf71bc668093e31593713694cf076db895Torok Edwinval mdstring : llcontext -> string -> llvalue 69546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 69646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdnode c elts] returns the MDNode containing the values [elts] in the 69746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar context [c]. 69846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 699a156efdf71bc668093e31593713694cf076db895Torok Edwinval mdnode : llcontext -> llvalue array -> llvalue 70046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 7014f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin(** [get_mdstring v] returns the MDString. 7024f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin * See the method [llvm::MDString::getString] *) 7034f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinval get_mdstring : llvalue -> string option 7044f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin 7054f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin(** [get_named_metadata m name] return all the MDNodes belonging to the named 7064f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin * metadata (if any). 7074f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin * See the method [llvm::NamedMDNode::getOperand]. *) 7084f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinval get_named_metadata : llmodule -> string -> llvalue array 70946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 7103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 7110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 7133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 714a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_int : lltype -> int -> llvalue 7150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 7173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 718a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_of_int64 : lltype -> Int64.t -> bool -> llvalue 719a156efdf71bc668093e31593713694cf076db895Torok Edwin 7206563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin(** [int64_of_const c] returns the int64 value of the [c] constant integer. 7216563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin * None is returned if this is not an integer constant, or bitwidth exceeds 64. 7226563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin * See the method [llvm::ConstantInt::getSExtValue].*) 7236563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval int64_of_const : llvalue -> Int64.t option 7240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 72545d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_int_of_string ty s r] returns the integer constant of type [ty] and 72645d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar * value [s], with the radix [r]. See the method [llvm::ConstantInt::get]. *) 727a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_int_of_string : lltype -> string -> int -> llvalue 728a156efdf71bc668093e31593713694cf076db895Torok Edwin 72945d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 7300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 7312b526fec6a03be58f56e885af6b53c197973e573Erick Tryzelaar value [n]. See the method [llvm::ConstantFP::get]. *) 732a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_float : lltype -> float -> llvalue 7338ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 73445d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_float_of_string ty s] returns the floating point constant of type 73545d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar [ty] and value [n]. See the method [llvm::ConstantFP::get]. *) 736a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_float_of_string : lltype -> string -> llvalue 737a156efdf71bc668093e31593713694cf076db895Torok Edwin 73845d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 7393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 7403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 7410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 742b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_string c s] returns the constant [i8] array with the values of the 743b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] in the context [c]. The array is not 744b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar null-terminated (but see {!const_stringz}). This value can in turn be used 745b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar as the initializer for a global variable. See the method 746b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::ConstantArray::get]. *) 747a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_string : llcontext -> string -> llvalue 7480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 749b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_stringz c s] returns the constant [i8] array with the values of the 750b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] and a null terminator in the context [c]. This 751b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value can in turn be used as the initializer for a global variable. 7523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 753a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_stringz : llcontext -> string -> llvalue 7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 7560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 7570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 7583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 759a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_array : lltype -> llvalue array -> llvalue 7600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7615371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_struct context elts] returns the structured constant of type 7625371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [struct_type (Array.map type_of elts)] and containing the values [elts] 7635371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar in the context [context]. This value can in turn be used as the initializer 7646b228e506f42972c003599f4873a24910f8a530aTorok Edwin for a global variable. See the method [llvm::ConstantStruct::getAnon]. *) 765a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_struct : llcontext -> llvalue array -> llvalue 766a156efdf71bc668093e31593713694cf076db895Torok Edwin 7676b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [const_named_struct namedty elts] returns the structured constant of type 7686b228e506f42972c003599f4873a24910f8a530aTorok Edwin [namedty] (which must be a named structure type) and containing the values [elts]. 7696b228e506f42972c003599f4873a24910f8a530aTorok Edwin This value can in turn be used as the initializer 7706b228e506f42972c003599f4873a24910f8a530aTorok Edwin for a global variable. See the method [llvm::ConstantStruct::get]. *) 7716b228e506f42972c003599f4873a24910f8a530aTorok Edwinval const_named_struct : lltype -> llvalue array -> llvalue 7725371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 7735371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_packed_struct context elts] returns the structured constant of 7745371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar type {!packed_struct_type} [(Array.map type_of elts)] and containing the 7755371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar values [elts] in the context [context]. This value can in turn be used as 7765371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the initializer for a global variable. See the method 7775371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::ConstantStruct::get]. *) 778a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_packed_struct : llcontext -> llvalue array -> llvalue 779a156efdf71bc668093e31593713694cf076db895Torok Edwin 7800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 7820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 7833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 784a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_vector : llvalue array -> llvalue 7858ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 7863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 7873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 7880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 789ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands(** [align_of ty] returns the alignof constant for the type [ty]. This is 790ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands equivalent to [const_ptrtoint (const_gep (const_null (pointer_type {i8,ty})) 791ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 0) (const_int i32_type 1)) i32_type], but considerably 792ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands more readable. See the method [llvm::ConstantExpr::getAlignOf]. *) 793a156efdf71bc668093e31593713694cf076db895Torok Edwinval align_of : lltype -> llvalue 794ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 7950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 7960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 797ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 1)) i64_type], but considerably more readable. 7983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 799a156efdf71bc668093e31593713694cf076db895Torok Edwinval size_of : lltype -> llvalue 8000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 8023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 803a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_neg : llvalue -> llvalue 8040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 80519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_neg c] returns the arithmetic negation of the constant [c] with 80619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the negation overflows. 80719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWNeg]. *) 808a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_neg : llvalue -> llvalue 80919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 81019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_neg c] returns the arithmetic negation of the constant [c] with 81119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the negation overflows. 81219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNUWNeg]. *) 813a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_neg : llvalue -> llvalue 81419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 8151b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fneg c] returns the arithmetic negation of the constant float [c]. 8161b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFNeg]. *) 817a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fneg : llvalue -> llvalue 8181b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 8203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 821a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_not : llvalue -> llvalue 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 8243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 825a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_add : llvalue -> llvalue -> llvalue 8260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8271b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_nsw_add c1 c2] returns the constant sum of two constants with no 8281b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed wrapping. The result is undefined if the sum overflows. 8291b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 830a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_add : llvalue -> llvalue -> llvalue 8311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 83219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_add c1 c2] returns the constant sum of two constants with no 83319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unsigned wrapping. The result is undefined if the sum overflows. 83419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 835a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_add : llvalue -> llvalue -> llvalue 83619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 8371b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fadd c1 c2] returns the constant sum of two constant floats. 8381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFAdd]. *) 839a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fadd : llvalue -> llvalue -> llvalue 8401b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 8423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 843a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sub : llvalue -> llvalue -> llvalue 8440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 84519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_sub c1 c2] returns the constant difference of two constants with 84619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 84719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 848a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_sub : llvalue -> llvalue -> llvalue 84919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 85019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_sub c1 c2] returns the constant difference of two constants with 85119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 85219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 853a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_sub : llvalue -> llvalue -> llvalue 85419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 8551b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fsub c1 c2] returns the constant difference, [c1 - c2], of two 8561b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant floats. See the method [llvm::ConstantExpr::getFSub]. *) 857a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fsub : llvalue -> llvalue -> llvalue 8581b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 8603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 861a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_mul : llvalue -> llvalue -> llvalue 8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 86319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_mul c1 c2] returns the constant product of two constants with 86419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 86519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 866a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_mul : llvalue -> llvalue -> llvalue 86719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 86819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_mul c1 c2] returns the constant product of two constants with 86919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 87019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 871a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_mul : llvalue -> llvalue -> llvalue 87219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 8731b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fmul c1 c2] returns the constant product of two constants floats. 8741b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFMul]. *) 875a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fmul : llvalue -> llvalue -> llvalue 8761b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 8780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 8793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 880a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_udiv : llvalue -> llvalue -> llvalue 8810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 8830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 8841b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSDiv]. *) 885a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sdiv : llvalue -> llvalue -> llvalue 8860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8871b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_exact_sdiv c1 c2] returns the constant quotient [c1 / c2] of two 8881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed integer constants. The result is undefined if the result is rounded 8895371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar or overflows. See the method [llvm::ConstantExpr::getExactSDiv]. *) 890a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_exact_sdiv : llvalue -> llvalue -> llvalue 8911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 8920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 8930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 8943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 895a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fdiv : llvalue -> llvalue -> llvalue 8960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8971b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_urem c1 c2] returns the constant remainder [c1 MOD c2] of two 8980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 8993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 900a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_urem : llvalue -> llvalue -> llvalue 9010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9021b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_srem c1 c2] returns the constant remainder [c1 MOD c2] of two 9030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 9043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 905a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_srem : llvalue -> llvalue -> llvalue 9060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 9080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 9093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 910a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_frem : llvalue -> llvalue -> llvalue 9110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 9130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 9143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 915a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_and : llvalue -> llvalue -> llvalue 9160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 9180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 9193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 920a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_or : llvalue -> llvalue -> llvalue 9210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 9243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 925a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_xor : llvalue -> llvalue -> llvalue 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 9280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 9293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 930a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 931a156efdf71bc668093e31593713694cf076db895Torok Edwin 9320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 9340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 9353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 936a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 937a156efdf71bc668093e31593713694cf076db895Torok Edwin 9380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 9400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 9413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 942a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_shl : llvalue -> llvalue -> llvalue 9430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 9463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 947a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_lshr : llvalue -> llvalue -> llvalue 9480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 9500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 9513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 952a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_ashr : llvalue -> llvalue -> llvalue 9530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_gep pc indices] returns the constant [getElementPtr] of [p1] with the 9550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 9563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 957a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_gep : llvalue -> llvalue array -> llvalue 9580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_in_bounds_gep pc indices] returns the constant [getElementPtr] of [p1] 9601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar with the constant integers indices from the array [indices]. 9611b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getInBoundsGetElementPtr]. *) 962a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_in_bounds_gep : llvalue -> llvalue array -> llvalue 963a156efdf71bc668093e31593713694cf076db895Torok Edwin 9641b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 9673b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 968a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_trunc : llvalue -> lltype -> llvalue 9690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 9710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 9723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 973a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sext : llvalue -> lltype -> llvalue 9740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 9760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 9773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 978a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_zext : llvalue -> lltype -> llvalue 9790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 9823b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 983a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptrunc : llvalue -> lltype -> llvalue 9840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 9873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 988a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fpext : llvalue -> lltype -> llvalue 9890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 9910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 9923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 993a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_uitofp : llvalue -> lltype -> llvalue 9940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 9960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 9973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 998a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sitofp : llvalue -> lltype -> llvalue 9990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 10010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 10023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 1003a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptoui : llvalue -> lltype -> llvalue 10040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 10060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 10073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 1008a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptosi : llvalue -> lltype -> llvalue 10090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 10123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 1013a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_ptrtoint : llvalue -> lltype -> llvalue 10140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 10160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 10173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 1018a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_inttoptr : llvalue -> lltype -> llvalue 10190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 10210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 10223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 1023a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_bitcast : llvalue -> lltype -> llvalue 10240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10251b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_zext_or_bitcast c ty] returns a constant zext or bitwise cast 10261b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 10271b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getZExtOrBitCast]. *) 1028a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_zext_or_bitcast : llvalue -> lltype -> llvalue 1029a156efdf71bc668093e31593713694cf076db895Torok Edwin 10301b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_sext_or_bitcast c ty] returns a constant sext or bitwise cast 10321b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 10331b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSExtOrBitCast]. *) 1034a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sext_or_bitcast : llvalue -> lltype -> llvalue 1035a156efdf71bc668093e31593713694cf076db895Torok Edwin 10361b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10371b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_trunc_or_bitcast c ty] returns a constant trunc or bitwise cast 10381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 10391b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getTruncOrBitCast]. *) 1040a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_trunc_or_bitcast : llvalue -> lltype -> llvalue 1041a156efdf71bc668093e31593713694cf076db895Torok Edwin 10421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_pointercast c ty] returns a constant bitcast or a pointer-to-int 10441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar cast conversion of constant [c] to type [ty] of equal size. 10451b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getPointerCast]. *) 1046a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_pointercast : llvalue -> lltype -> llvalue 1047a156efdf71bc668093e31593713694cf076db895Torok Edwin 10481b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10491b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_intcast c ty] returns a constant zext, bitcast, or trunc for integer 10501b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar -> integer casts of constant [c] to type [ty]. 10511b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getIntCast]. *) 1052a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_intcast : llvalue -> lltype -> llvalue 1053a156efdf71bc668093e31593713694cf076db895Torok Edwin 10541b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10551b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> 10565371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar fp casts of constant [c] to type [ty]. 10571b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFPCast]. *) 1058a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fpcast : llvalue -> lltype -> llvalue 1059a156efdf71bc668093e31593713694cf076db895Torok Edwin 10601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 10620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 10633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 1064a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_select : llvalue -> llvalue -> llvalue -> llvalue 1065a156efdf71bc668093e31593713694cf076db895Torok Edwin 10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 10680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 10690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 10703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 1071a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_extractelement : llvalue -> llvalue -> llvalue 1072a156efdf71bc668093e31593713694cf076db895Torok Edwin 10730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 10780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 10793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 1080a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 1081a156efdf71bc668093e31593713694cf076db895Torok Edwin 10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 1084d6850b0f37e2bfdb189452562c00faa24dc32574Bob Wilson See the LLVM Language Reference for details on the [shufflevector] 10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 10863b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 1087a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 1088a156efdf71bc668093e31593713694cf076db895Torok Edwin 10894647569fe7706e76135a08ca0e5f90a447ccc5b4Gordon Henriksen 10901b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_extractvalue agg idxs] returns the constant [idxs]th value of 10911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant aggregate [agg]. Each [idxs] must be less than the size of the 10921b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar aggregate. See the method [llvm::ConstantExpr::getExtractValue]. *) 1093a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_extractvalue : llvalue -> int array -> llvalue 1094a156efdf71bc668093e31593713694cf076db895Torok Edwin 10951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 10961b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_insertvalue agg val idxs] inserts the value [val] in the specified 10971b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar indexs [idxs] in the aggegate [agg]. Each [idxs] must be less than the size 10981b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar of the aggregate. See the method [llvm::ConstantExpr::getInsertValue]. *) 1099a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_insertvalue : llvalue -> llvalue -> int array -> llvalue 1100a156efdf71bc668093e31593713694cf076db895Torok Edwin 11011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 1102ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar(** [const_inline_asm ty asm con side align] inserts a inline assembly string. 1103ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar See the method [llvm::InlineAsm::get]. *) 1104a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_inline_asm : lltype -> string -> string -> bool -> bool -> 1105ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar llvalue 1106a156efdf71bc668093e31593713694cf076db895Torok Edwin 1107ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar 1108c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [block_address f bb] returns the address of the basic block [bb] in the 1109c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar function [f]. See the method [llvm::BasicBlock::get]. *) 1110a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_address : llvalue -> llbasicblock -> llvalue 1111c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 11123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 11140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1115dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 1116dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 1117a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_parent : llvalue -> llmodule 1118dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 11190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 11200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 11213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 1122a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_declaration : llvalue -> bool 11230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 11253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 1126a156efdf71bc668093e31593713694cf076db895Torok Edwinval linkage : llvalue -> Linkage.t 11270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 11293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 1130a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_linkage : Linkage.t -> llvalue -> unit 11310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 11333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 1134a156efdf71bc668093e31593713694cf076db895Torok Edwinval section : llvalue -> string 11350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 11373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 1138a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_section : string -> llvalue -> unit 11390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 11413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 1142a156efdf71bc668093e31593713694cf076db895Torok Edwinval visibility : llvalue -> Visibility.t 11430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 11453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 1146a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_visibility : Visibility.t -> llvalue -> unit 1147a156efdf71bc668093e31593713694cf076db895Torok Edwin 11480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 11503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 1151a156efdf71bc668093e31593713694cf076db895Torok Edwinval alignment : llvalue -> int 11520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 11543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 1155a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_alignment : int -> llvalue -> unit 11568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 11573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 11583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 11618e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar with name [name] in module [m] in the default address space (0). If such a 11628e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar global variable already exists, it is returned. If the type of the existing 11638e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar global differs, then a bitcast to [ty] is returned. *) 1164a156efdf71bc668093e31593713694cf076db895Torok Edwinval declare_global : lltype -> string -> llmodule -> llvalue 1165a156efdf71bc668093e31593713694cf076db895Torok Edwin 11660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1167df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar(** [declare_qualified_global ty name addrspace m] returns a new global variable 1168df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar of type [ty] and with name [name] in module [m] in the address space 1169df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar [addrspace]. If such a global variable already exists, it is returned. If 1170df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar the type of the existing global differs, then a bitcast to [ty] is 1171df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar returned. *) 1172a156efdf71bc668093e31593713694cf076db895Torok Edwinval declare_qualified_global : lltype -> string -> int -> llmodule -> 11738e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar llvalue 1174a156efdf71bc668093e31593713694cf076db895Torok Edwin 11758e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar 11760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 11778e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar initializer [init] in module [m] in the default address space (0). If the 11788e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar named global already exists, it is renamed. 11793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 1180a156efdf71bc668093e31593713694cf076db895Torok Edwinval define_global : string -> llvalue -> llmodule -> llvalue 1181a156efdf71bc668093e31593713694cf076db895Torok Edwin 11820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1183df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar(** [define_qualified_global name init addrspace m] returns a new global with 1184df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar name [name] and initializer [init] in module [m] in the address space 1185df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar [addrspace]. If the named global already exists, it is renamed. 11868e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar See the constructor of [llvm::GlobalVariable]. *) 1187a156efdf71bc668093e31593713694cf076db895Torok Edwinval define_qualified_global : string -> llvalue -> int -> llmodule -> 11888e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar llvalue 1189a156efdf71bc668093e31593713694cf076db895Torok Edwin 11908e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar 11910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 11920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 11933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 1194a156efdf71bc668093e31593713694cf076db895Torok Edwinval lookup_global : string -> llmodule -> llvalue option 1195a156efdf71bc668093e31593713694cf076db895Torok Edwin 11960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 11983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 1199a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_global : llvalue -> unit 12000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 12024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 12034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 12044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 1205a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_begin : llmodule -> (llmodule, llvalue) llpos 1206a156efdf71bc668093e31593713694cf076db895Torok Edwin 12074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 12094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 12104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 1211a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_succ : llvalue -> (llmodule, llvalue) llpos 1212a156efdf71bc668093e31593713694cf076db895Torok Edwin 12134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 12154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 12164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 12174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 12194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 12204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 12214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 12234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 12244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 12254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 1226a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_end : llmodule -> (llmodule, llvalue) llrev_pos 1227a156efdf71bc668093e31593713694cf076db895Torok Edwin 12284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 12304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 12314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 1232a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_pred : llvalue -> (llmodule, llvalue) llrev_pos 1233a156efdf71bc668093e31593713694cf076db895Torok Edwin 12344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 12364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 12374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 12384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 12404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 12414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 12424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 12440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 12453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 1246a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_global_constant : llvalue -> bool 12470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 12490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 12503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 1251a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_global_constant : bool -> llvalue -> unit 1252a156efdf71bc668093e31593713694cf076db895Torok Edwin 12530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 12553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 1256a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_initializer : llvalue -> llvalue 12570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 12590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 12603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 1261a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_initializer : llvalue -> llvalue -> unit 12620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 12640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 12653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 1266a156efdf71bc668093e31593713694cf076db895Torok Edwinval remove_initializer : llvalue -> unit 12670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 12690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 12703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 1271a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_thread_local : llvalue -> bool 12720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 12740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 12753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 1276a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_thread_local : bool -> llvalue -> unit 12778ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 12783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12796ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar(** {7 Operations on aliases} *) 12806ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 12816ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar(** [add_alias m t a n] inserts an alias in the module [m] with the type [t] and 12826ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar the aliasee [a] with the name [n]. 12836ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar See the constructor for [llvm::GlobalAlias]. *) 1284a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_alias : llmodule -> lltype -> llvalue -> string -> llvalue 1285a156efdf71bc668093e31593713694cf076db895Torok Edwin 12866ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 12876ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 12883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 12890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 12910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 12920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 12933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 1294a156efdf71bc668093e31593713694cf076db895Torok Edwinval declare_function : string -> lltype -> llmodule -> llvalue 1295a156efdf71bc668093e31593713694cf076db895Torok Edwin 12960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 12980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 12990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 13003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 1301a156efdf71bc668093e31593713694cf076db895Torok Edwinval define_function : string -> lltype -> llmodule -> llvalue 1302a156efdf71bc668093e31593713694cf076db895Torok Edwin 13030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 13050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 13063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 1307a156efdf71bc668093e31593713694cf076db895Torok Edwinval lookup_function : string -> llmodule -> llvalue option 1308a156efdf71bc668093e31593713694cf076db895Torok Edwin 13090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 13113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 1312a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_function : llvalue -> unit 13130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 13154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 13164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 13174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 1318a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_begin : llmodule -> (llmodule, llvalue) llpos 1319a156efdf71bc668093e31593713694cf076db895Torok Edwin 13204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 13224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 13234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 1324a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_succ : llvalue -> (llmodule, llvalue) llpos 1325a156efdf71bc668093e31593713694cf076db895Torok Edwin 13264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 13284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 13294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 13304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 13324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 13334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 13344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 13364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 13374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 13384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 1339a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_end : llmodule -> (llmodule, llvalue) llrev_pos 1340a156efdf71bc668093e31593713694cf076db895Torok Edwin 13414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 13434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 1344a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_pred : llvalue -> (llmodule, llvalue) llrev_pos 1345a156efdf71bc668093e31593713694cf076db895Torok Edwin 13464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 13484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 13494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 13504733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 13524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 13534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 13544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 13563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 1357a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_intrinsic : llvalue -> bool 13580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 13603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 1361a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_call_conv : llvalue -> int 13620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 13640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 13653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 1366a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_function_call_conv : int -> llvalue -> unit 1367a156efdf71bc668093e31593713694cf076db895Torok Edwin 136846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 13695eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [gc f] returns [Some name] if the function [f] has a garbage 137080a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 13715eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen See the method [llvm::Function::getGC]. *) 1372a156efdf71bc668093e31593713694cf076db895Torok Edwinval gc : llvalue -> string option 137380a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 13745eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [set_gc gc f] sets the collection algorithm for the function [f] to 13755eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen [gc]. See the method [llvm::Function::setGC]. *) 1376a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_gc : string option -> llvalue -> unit 137780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1378e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_function_attr f a] adds attribute [a] to the return type of function 1379e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [f]. *) 13800941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_function_attr : llvalue -> Attribute.t -> unit 1381e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 13820be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin(** [function_attr f] returns the function attribute for the function [f]. 13830be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin * See the method [llvm::Function::getAttributes] *) 13840be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinval function_attr : llvalue -> Attribute.t list 13850be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 1386e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_function_attr f a] removes attribute [a] from the return type of 1387e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands function [f]. *) 13880941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_function_attr : llvalue -> Attribute.t -> unit 13893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1390dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 1391dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1392dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 1393dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1394a156efdf71bc668093e31593713694cf076db895Torok Edwinval params : llvalue -> llvalue array 1395dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1396dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 1397dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1398a156efdf71bc668093e31593713694cf076db895Torok Edwinval param : llvalue -> int -> llvalue 1399dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14000be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin(** [param_attr p] returns the attributes of parameter [p]. 14010be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin * See the methods [llvm::Function::getAttributes] and 14020be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin * [llvm::Attributes::getParamAttributes] *) 14030be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinval param_attr : llvalue -> Attribute.t list 14040be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 1405dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 1406dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 1407a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_parent : llvalue -> llvalue 1408dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 14104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 14114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 14124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 1413a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_begin : llvalue -> (llvalue, llvalue) llpos 14144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 14164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 14174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 1418a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_succ : llvalue -> (llvalue, llvalue) llpos 14194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 14214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 14224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 14234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 14254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 14264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 14274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 14294733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 14304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 14314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 1432a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_end : llvalue -> (llvalue, llvalue) llrev_pos 14334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 14354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 1436a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_pred : llvalue -> (llvalue, llvalue) llrev_pos 1437a156efdf71bc668093e31593713694cf076db895Torok Edwin 14384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 14404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 14414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 14424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14434733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 14444733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 14454733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 14464733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1447e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_param p a] adds attribute [a] to parameter [p]. *) 14480941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_param_attr : llvalue -> Attribute.t -> unit 1449e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1450e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_param_attr p a] removes attribute [a] from parameter [p]. *) 14510941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_param_attr : llvalue -> Attribute.t -> unit 1452e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1453e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [set_param_alignment p a] set the alignment of parameter [p] to [a]. *) 1454a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_param_alignment : llvalue -> int -> unit 1455a156efdf71bc668093e31593713694cf076db895Torok Edwin 1456dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 14580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 14603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 1461a156efdf71bc668093e31593713694cf076db895Torok Edwinval basic_blocks : llvalue -> llbasicblock array 14620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 14643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 1465a156efdf71bc668093e31593713694cf076db895Torok Edwinval entry_block : llvalue -> llbasicblock 14660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 14683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 1469a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_block : llbasicblock -> unit 14700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1471b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [append_block c name f] creates a new basic block named [name] at the end of 1472b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar function [f] in the context [c]. 14733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1474a156efdf71bc668093e31593713694cf076db895Torok Edwinval append_block : llcontext -> string -> llvalue -> llbasicblock 1475a156efdf71bc668093e31593713694cf076db895Torok Edwin 14760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1477b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [insert_block c name bb] creates a new basic block named [name] before the 1478b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar basic block [bb] in the context [c]. 14793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1480a156efdf71bc668093e31593713694cf076db895Torok Edwinval insert_block : llcontext -> string -> llbasicblock -> llbasicblock 1481a156efdf71bc668093e31593713694cf076db895Torok Edwin 14820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1483dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1484dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1485a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_parent : llbasicblock -> llvalue 1486dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14874733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 14884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 14894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 14904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 1491a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_begin : llvalue -> (llvalue, llbasicblock) llpos 1492a156efdf71bc668093e31593713694cf076db895Torok Edwin 14934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 14954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 14964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 1497a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 1498a156efdf71bc668093e31593713694cf076db895Torok Edwin 14994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 15014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 15024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 15034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 15054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 15064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 15074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 15094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 15104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 15114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 1512a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 1513a156efdf71bc668093e31593713694cf076db895Torok Edwin 15144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_pred gv] returns the function list position preceding [After gv]. 15164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 1517a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 1518a156efdf71bc668093e31593713694cf076db895Torok Edwin 1519ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval block_terminator : llbasicblock -> llvalue option 15204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 15224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 15234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 15244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 15264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 15274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 15284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 1530a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_of_block : llbasicblock -> llvalue 15310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 15330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 15343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 1535a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_is_block : llvalue -> bool 15360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 1538a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_of_value : llvalue -> llbasicblock 153946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1540cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1541dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1542dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1543dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1544dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1545a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_parent : llvalue -> llbasicblock 1546dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1547033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1548033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1549033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1550033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1551a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1552a156efdf71bc668093e31593713694cf076db895Torok Edwin 1553033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1554033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1555033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1556a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1557a156efdf71bc668093e31593713694cf076db895Torok Edwin 1558033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1559033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1560033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1561033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1562033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1563033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1564033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1565033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1566033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1567033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1568033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1569033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1570033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1571a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1572a156efdf71bc668093e31593713694cf076db895Torok Edwin 1573033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1574033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1575033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1576a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1577a156efdf71bc668093e31593713694cf076db895Torok Edwin 1578033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1579033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1580033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1581033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1582033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 15836563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval instr_opcode : llvalue -> Opcode.t 1584dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 15854917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwinval icmp_predicate : llvalue -> Icmp.t option 15864917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwin 15873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 15883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 15893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 15903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 15913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 15923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1593a156efdf71bc668093e31593713694cf076db895Torok Edwinval instruction_call_conv: llvalue -> int 1594a156efdf71bc668093e31593713694cf076db895Torok Edwin 1595cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1596dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1597dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1598dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1599dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 16003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1601a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_instruction_call_conv: int -> llvalue -> unit 1602a156efdf71bc668093e31593713694cf076db895Torok Edwin 1603cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1604e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_instruction_param_attr ci i a] adds attribute [a] to the [i]th 1605e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands parameter of the call or invoke instruction [ci]. [i]=0 denotes the return 1606e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands value. *) 16070941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1608e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1609e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_instruction_param_attr ci i a] removes attribute [a] from the 1610e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [i]th parameter of the call or invoke instruction [ci]. [i]=0 denotes the 1611e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands return value. *) 16120941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1613e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 161407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** {Operations on call instructions (only)} *) 161507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 161607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [is_tail_call ci] is [true] if the call instruction [ci] is flagged as 161707cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen eligible for tail call optimization, [false] otherwise. 161807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::isTailCall]. *) 1619a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_tail_call : llvalue -> bool 162007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 162107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [set_tail_call tc ci] flags the call instruction [ci] as eligible for tail 162207cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen call optimization if [tc] is [true], clears otherwise. 162307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::setTailCall]. *) 1624a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_tail_call : bool -> llvalue -> unit 16253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 16263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 16270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 16293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 1630a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 1631a156efdf71bc668093e31593713694cf076db895Torok Edwin 16320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 16343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 1635a156efdf71bc668093e31593713694cf076db895Torok Edwinval incoming : llvalue -> (llvalue * llbasicblock) list 16362618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 1637ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [delete_instruction i] deletes the instruction [i]. 1638ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * See the method [llvm::Instruction::eraseFromParent]. *) 1639ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval delete_instruction : llvalue -> unit 16403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 16413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 16420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16435371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [builder context] creates an instruction builder with no position in 16445371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. It is invalid to use this builder until its position 16455371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar is set with {!position_before} or {!position_at_end}. See the constructor 16465371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for [llvm::LLVMBuilder]. *) 1647a156efdf71bc668093e31593713694cf076db895Torok Edwinval builder : llcontext -> llbuilder 1648033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1649033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1650033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 16515371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at : llcontext -> (llbasicblock, llvalue) llpos -> llbuilder 1652a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 16530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 16543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 16555371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_before : llcontext -> llvalue -> llbuilder 16560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 16583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 16595371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at_end : llcontext -> llbasicblock -> llbuilder 1660033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1661033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1662033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1663033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1664a156efdf71bc668093e31593713694cf076db895Torok Edwinval position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1665a156efdf71bc668093e31593713694cf076db895Torok Edwin 16660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 16683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1669033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 16700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 16723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1673033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 167446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1675dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1676dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1677dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1678dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1679a156efdf71bc668093e31593713694cf076db895Torok Edwinval insertion_block : llbuilder -> llbasicblock 1680dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 16815c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar(** [insert_into_builder i name b] inserts the specified instruction [i] at the 16825c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar position specified by the instruction builder [b]. 16835c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar See the method [llvm::LLVMBuilder::Insert]. *) 1684a156efdf71bc668093e31593713694cf076db895Torok Edwinval insert_into_builder : llvalue -> string -> llbuilder -> unit 1685a156efdf71bc668093e31593713694cf076db895Torok Edwin 16865c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 168746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Metadata} *) 168846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 168946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_current_debug_location b md] sets the current debug location [md] in 169046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar the builder [b]. 169146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetDebugLocation]. *) 1692a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_current_debug_location : llbuilder -> llvalue -> unit 1693a156efdf71bc668093e31593713694cf076db895Torok Edwin 169446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 169546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_current_debug_location b] clears the current debug location in the 169646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar builder [b]. *) 1697a156efdf71bc668093e31593713694cf076db895Torok Edwinval clear_current_debug_location : llbuilder -> unit 1698a156efdf71bc668093e31593713694cf076db895Torok Edwin 169946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 170046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [current_debug_location b] returns the current debug location, or None 170146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar if none is currently set. 170246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::GetDebugLocation]. *) 1703a156efdf71bc668093e31593713694cf076db895Torok Edwinval current_debug_location : llbuilder -> llvalue option 1704a156efdf71bc668093e31593713694cf076db895Torok Edwin 170546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 170646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_inst_debug_location b i] sets the current debug location of the builder 170746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [b] to the instruction [i]. 170846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetInstDebugLocation]. *) 1709a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_inst_debug_location : llbuilder -> llvalue -> unit 1710a156efdf71bc668093e31593713694cf076db895Torok Edwin 17113b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 17123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 17130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 17150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 17160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 1718a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ret_void : llbuilder -> llvalue 17190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 17210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 17220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 1724a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ret : llvalue -> llbuilder -> llvalue 17250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1726e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_aggregate_ret vs b] creates a 1727e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [ret {...} { %v1, %v2, ... } ] 1728e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1729e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateAggregateRet]. *) 1730a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1731a156efdf71bc668093e31593713694cf076db895Torok Edwin 1732e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 17330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 17341430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %bb] 17350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 1737a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_br : llbasicblock -> llbuilder -> llvalue 17380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 17401430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %cond, %tbb, %fbb] 17410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 1743a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 1744a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 17450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 174621491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [build_switch case elsebb count b] creates an empty 17470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 174821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen instruction at the position specified by the instruction builder [b] with 174921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen space reserved for [count] cases. 17503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 1751a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 1752a156efdf71bc668093e31593713694cf076db895Torok Edwin 1753ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_malloc ty name b] creates an [malloc] 1754ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1755ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::CallInst::CreateMalloc]. *) 1756ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_malloc : lltype -> string -> llbuilder -> llvalue 1757ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1758ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_array_malloc ty val name b] creates an [array malloc] 1759ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1760ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::CallInst::CreateArrayMalloc]. *) 1761ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_array_malloc : lltype -> llvalue -> string -> llbuilder -> llvalue 1762ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1763ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_free p b] creates a [free] 1764ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1765ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::LLVMBuilder::CreateFree]. *) 1766ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_free : llvalue -> llbuilder -> llvalue 17670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 176821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [add_case sw onval bb] causes switch instruction [sw] to branch to [bb] 176921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen when its input matches the constant [onval]. 177021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen See the method [llvm::SwitchInst::addCase]. **) 1771a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_case : llvalue -> llvalue -> llbasicblock -> unit 1772a156efdf71bc668093e31593713694cf076db895Torok Edwin 1773ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [switch_default_dest sw] returns the default destination of the [switch] 1774ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * instruction. 1775ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * See the method [llvm:;SwitchInst::getDefaultDest]. **) 1776ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval switch_default_dest : llvalue -> llbasicblock 177721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen 1778c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [build_indirect_br addr count b] creates a 1779c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar [indirectbr %addr] 1780c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar instruction at the position specified by the instruction builder [b] with 1781c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar space reserved for [count] destinations. 1782c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::LLVMBuilder::CreateIndirectBr]. *) 1783a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_indirect_br : llvalue -> int -> llbuilder -> llvalue 1784a156efdf71bc668093e31593713694cf076db895Torok Edwin 1785c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 1786c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [add_destination br bb] adds the basic block [bb] as a possible branch 1787c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar location for the indirectbr instruction [br]. 1788c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::IndirectBrInst::addDestination]. **) 1789a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_destination : llvalue -> llbasicblock -> unit 1790a156efdf71bc668093e31593713694cf076db895Torok Edwin 1791c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 17920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 17930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 17940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 17953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 1796a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_invoke : llvalue -> llvalue array -> llbasicblock -> 179746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 1798a156efdf71bc668093e31593713694cf076db895Torok Edwin 179948488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [build_landingpad ty persfn numclauses name b] creates an 180048488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin [landingpad] 180148488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin instruction at the position specified by the instruction builder [b]. 180248488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin See the method [llvm::LLVMBuilder::CreateLandingPad]. *) 180348488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinval build_landingpad : lltype -> llvalue -> int -> string -> llbuilder -> 180448488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin llvalue 180548488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin 180648488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [set_cleanup lp] sets the cleanup flag in the [landingpad]instruction. 180748488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin See the method [llvm::LandingPadInst::setCleanup]. *) 180848488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinval set_cleanup : llvalue -> bool -> unit 18090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1810ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [add_clause lp clause] adds the clause to the [landingpad]instruction. 1811ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::LandingPadInst::addClause]. *) 1812ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval add_clause : llvalue -> llvalue -> unit 1813ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1814ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(* [build_resume exn b] builds a [resume exn] instruction 1815ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * at the position specified by the instruction builder [b]. 1816ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin * See the method [llvm::LLVMBuilder::CreateResume] *) 1817ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_resume : llvalue -> llbuilder -> llvalue 1818ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 18190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 18200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 18210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 1823a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_unreachable : llbuilder -> llvalue 182446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 18253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 18270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 18290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 18300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 1832a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1833a156efdf71bc668093e31593713694cf076db895Torok Edwin 18340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18351430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar(** [build_nsw_add x y name b] creates a 1836e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = nsw add %x, %y] 1837e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1838e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWAdd]. *) 1839a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1840a156efdf71bc668093e31593713694cf076db895Torok Edwin 1841e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 184219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_add x y name b] creates a 184319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw add %x, %y] 184419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 184519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWAdd]. *) 1846a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1847a156efdf71bc668093e31593713694cf076db895Torok Edwin 184819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1849e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fadd x y name b] creates a 1850e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fadd %x, %y] 1851e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1852e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFAdd]. *) 1853a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1854a156efdf71bc668093e31593713694cf076db895Torok Edwin 1855e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 18560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 18570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 18580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 1860a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1861a156efdf71bc668093e31593713694cf076db895Torok Edwin 18620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 186319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_sub x y name b] creates a 186419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub %x, %y] 186519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 186619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWSub]. *) 1867a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1868a156efdf71bc668093e31593713694cf076db895Torok Edwin 186919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 187019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_sub x y name b] creates a 187119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub %x, %y] 187219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 187319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWSub]. *) 1874a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1875a156efdf71bc668093e31593713694cf076db895Torok Edwin 187619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1877e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fsub x y name b] creates a 1878e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fsub %x, %y] 1879e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1880e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFSub]. *) 1881a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1882a156efdf71bc668093e31593713694cf076db895Torok Edwin 1883e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 18840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 18850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 18860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 1888a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1889a156efdf71bc668093e31593713694cf076db895Torok Edwin 18900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 189119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_mul x y name b] creates a 189219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw mul %x, %y] 189319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 189419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWMul]. *) 1895a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1896a156efdf71bc668093e31593713694cf076db895Torok Edwin 189719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 189819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_mul x y name b] creates a 189919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw mul %x, %y] 190019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 190119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWMul]. *) 1902a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1903a156efdf71bc668093e31593713694cf076db895Torok Edwin 190419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 1905e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fmul x y name b] creates a 1906e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fmul %x, %y] 1907e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1908e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFMul]. *) 1909a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1910a156efdf71bc668093e31593713694cf076db895Torok Edwin 1911e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 19120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 19130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 19140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 1916a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1917a156efdf71bc668093e31593713694cf076db895Torok Edwin 19180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 19200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 19210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 1923a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1924a156efdf71bc668093e31593713694cf076db895Torok Edwin 19250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1926e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_exact_sdiv x y name b] creates a 1927e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = exact sdiv %x, %y] 1928e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1929e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExactSDiv]. *) 1930a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1931a156efdf71bc668093e31593713694cf076db895Torok Edwin 1932e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 19330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 19340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 19350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 1937a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 1938a156efdf71bc668093e31593713694cf076db895Torok Edwin 19390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 19410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 19420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 1944a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 1945a156efdf71bc668093e31593713694cf076db895Torok Edwin 19460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 19480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 19490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 1951a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 1952a156efdf71bc668093e31593713694cf076db895Torok Edwin 19530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 19550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 19560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 1958a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 1959a156efdf71bc668093e31593713694cf076db895Torok Edwin 19600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 19620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 19630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 1965a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 1966a156efdf71bc668093e31593713694cf076db895Torok Edwin 19670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 19690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 19700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19713b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 1972a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 1973a156efdf71bc668093e31593713694cf076db895Torok Edwin 19740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 19760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 19770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 1979a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 1980a156efdf71bc668093e31593713694cf076db895Torok Edwin 19810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 19830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 19840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19853b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 1986a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 1987a156efdf71bc668093e31593713694cf076db895Torok Edwin 19880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 19900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 19910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 1993a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 1994a156efdf71bc668093e31593713694cf076db895Torok Edwin 19950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 19970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 19980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 2000a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 2001a156efdf71bc668093e31593713694cf076db895Torok Edwin 20020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 20040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 20050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 20073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 2008a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_neg : llvalue -> string -> llbuilder -> llvalue 2009a156efdf71bc668093e31593713694cf076db895Torok Edwin 20100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 201119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_neg x name b] creates a 201219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub 0, %x] 201319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 201419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 201519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 2016a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_neg : llvalue -> string -> llbuilder -> llvalue 2017a156efdf71bc668093e31593713694cf076db895Torok Edwin 201819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 201919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_neg x name b] creates a 202019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub 0, %x] 202119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 202219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 202319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 2024a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_neg : llvalue -> string -> llbuilder -> llvalue 2025a156efdf71bc668093e31593713694cf076db895Torok Edwin 202619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 202719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_fneg x name b] creates a 202819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = fsub 0, %x] 202919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 203019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 203119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateFNeg]. *) 2032a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fneg : llvalue -> string -> llbuilder -> llvalue 2033a156efdf71bc668093e31593713694cf076db895Torok Edwin 203419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 20350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 20360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 20370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 20393b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 2040a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_not : llvalue -> string -> llbuilder -> llvalue 2041a156efdf71bc668093e31593713694cf076db895Torok Edwin 204246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 20433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 20443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 20450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 20470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 20480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 2050a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_alloca : lltype -> string -> llbuilder -> llvalue 2051a156efdf71bc668093e31593713694cf076db895Torok Edwin 20520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 20540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 20550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 2057a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 2058a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 20590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 20610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 20620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 2064a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_load : llvalue -> string -> llbuilder -> llvalue 2065a156efdf71bc668093e31593713694cf076db895Torok Edwin 20660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 20670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 20680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 20690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 2071a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_store : llvalue -> llvalue -> llbuilder -> llvalue 2072a156efdf71bc668093e31593713694cf076db895Torok Edwin 20730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 2074632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 2075e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, indices...] 20760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 2078a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 2079a156efdf71bc668093e31593713694cf076db895Torok Edwin 208046abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2081e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_in_bounds_gep p indices name b] creates a 2082e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = gelementptr inbounds %p, indices...] 2083e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2084e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *) 2085a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder -> 2086a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2087e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2088e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_struct_gep p idx name b] creates a 2089e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, 0, idx] 2090e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2091e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *) 2092a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_struct_gep : llvalue -> int -> string -> llbuilder -> 2093a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2094e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2095e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_string str name b] creates a series of instructions that adds 2096e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar a global string at the position specified by the instruction builder [b]. 2097e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalString]. *) 2098a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_global_string : string -> string -> llbuilder -> llvalue 2099a156efdf71bc668093e31593713694cf076db895Torok Edwin 2100e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2101e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_stringptr str name b] creates a series of instructions that 2102e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar adds a global string pointer at the position specified by the instruction 21035371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar builder [b]. 2104e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *) 2105a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_global_stringptr : string -> string -> llbuilder -> llvalue 2106a156efdf71bc668093e31593713694cf076db895Torok Edwin 2107e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 21083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 21093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 21100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 21120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 21130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 2115a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 2116a156efdf71bc668093e31593713694cf076db895Torok Edwin 21170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 21190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 21200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 2122a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 2123a156efdf71bc668093e31593713694cf076db895Torok Edwin 21240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 21260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 21270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 2129a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 2130a156efdf71bc668093e31593713694cf076db895Torok Edwin 21310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 21330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 21340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 2136a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 2137a156efdf71bc668093e31593713694cf076db895Torok Edwin 21380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 21400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 21410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 2143a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 2144a156efdf71bc668093e31593713694cf076db895Torok Edwin 21450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 21470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 21480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 2150a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 2151a156efdf71bc668093e31593713694cf076db895Torok Edwin 21520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 21540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 21550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 2157a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 2158a156efdf71bc668093e31593713694cf076db895Torok Edwin 21590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 21610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 21620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 2164a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 2165a156efdf71bc668093e31593713694cf076db895Torok Edwin 21660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 21680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 21690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 2171a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 2172a156efdf71bc668093e31593713694cf076db895Torok Edwin 21730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 21750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 21760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 2178a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 2179a156efdf71bc668093e31593713694cf076db895Torok Edwin 21800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 21820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 21830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 2185a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 2186a156efdf71bc668093e31593713694cf076db895Torok Edwin 21870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 21890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 21900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 2191e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateBitCast]. *) 2192a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2193a156efdf71bc668093e31593713694cf076db895Torok Edwin 219446abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 2195e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast 2196e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2197e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 2198a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2199a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2200e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2201e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast 2202e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2203e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *) 2204a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2205a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2206e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2207e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast 2208e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2209e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 2210a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2211a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2212e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2213e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int 2214e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2215e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePointerCast]. *) 2216a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 2217a156efdf71bc668093e31593713694cf076db895Torok Edwin 2218e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2219e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_intcast v ty name b] creates a zext, bitcast, or trunc 2220e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2221e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIntCast]. *) 2222a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2223a156efdf71bc668093e31593713694cf076db895Torok Edwin 2224e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2225e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc 2226e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2227e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFPCast]. *) 2228a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2229a156efdf71bc668093e31593713694cf076db895Torok Edwin 2230e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 22313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 22323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 22330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 22350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 22360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 2238a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 2239a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 22400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 22420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 22430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 2245a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 2246a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 224746abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 22483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 22493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 22500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 22520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 22530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 2254a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 22553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 2256a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 2257a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 22580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 22600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 22610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22623b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 2263a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 2264a156efdf71bc668093e31593713694cf076db895Torok Edwin 22650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 22670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 22680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 2270a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 2271a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 22720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 22740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 22750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 2277a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 2278a156efdf71bc668093e31593713694cf076db895Torok Edwin 22790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 22810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 22820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 2284a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 2285a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 22860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 22880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 22890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 2291a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_insertelement : llvalue -> llvalue -> llvalue -> string -> 2292a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 22930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 22940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 22950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 22960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 2298a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 2299a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 23001ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2301e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg idx name b] creates a 2302e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = extractvalue %agg, %idx] 2303e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2304e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExtractValue]. *) 2305a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 2306a156efdf71bc668093e31593713694cf076db895Torok Edwin 2307e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2308e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg val idx name b] creates a 2309e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = insertvalue %agg, %val, %idx] 2310e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2311e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInsertValue]. *) 2312a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 2313a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2314e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2315e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_null val name b] creates a 2316e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp eq %val, null] 2317e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2318e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNull]. *) 2319a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_is_null : llvalue -> string -> llbuilder -> llvalue 2320a156efdf71bc668093e31593713694cf076db895Torok Edwin 2321e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2322e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_not_null val name b] creates a 2323e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp ne %val, null] 2324e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2325e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNotNull]. *) 2326a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_is_not_null : llvalue -> string -> llbuilder -> llvalue 2327a156efdf71bc668093e31593713694cf076db895Torok Edwin 2328e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2329e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure 2330e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar the difference between two pointer values at the position specified by the 23315371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar instruction builder [b]. 2332e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePtrDiff]. *) 2333a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 2334a156efdf71bc668093e31593713694cf076db895Torok Edwin 23351ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 23363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 23373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 2338da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2339da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 23403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 23413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 23423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 2343a156efdf71bc668093e31593713694cf076db895Torok Edwin val of_file : string -> llmemorybuffer 2344da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2345da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen (** [stdin ()] is the memory buffer containing the contents of standard input. 23463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 2347a156efdf71bc668093e31593713694cf076db895Torok Edwin val of_stdin : unit -> llmemorybuffer 2348da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 23493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 2350a156efdf71bc668093e31593713694cf076db895Torok Edwin val dispose : llmemorybuffer -> unit 2351da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2352d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2353d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2354d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 2355d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2356d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 2357d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 2358d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 2359d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 2360d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2361d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 2362d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 2363d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 2364d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 2365a156efdf71bc668093e31593713694cf076db895Torok Edwin val create : unit -> [ `Module ] t 2366d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 236716609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar (** [PassManager.create_function m] constructs a new function-by-function 236816609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar pass pipeline over the module [m]. It does not take ownership of [m]. 236916609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar This type of pipeline is suitable for code generation and JIT compilation 237016609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar tasks. 2371d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 2372a156efdf71bc668093e31593713694cf076db895Torok Edwin val create_function : llmodule -> [ `Function ] t 2373a156efdf71bc668093e31593713694cf076db895Torok Edwin 2374d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2375d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 2376d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 2377d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 2378d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 2379a156efdf71bc668093e31593713694cf076db895Torok Edwin val run_module : llmodule -> [ `Module ] t -> bool 2380a156efdf71bc668093e31593713694cf076db895Torok Edwin 2381d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2382d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 2383d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 2384d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 2385d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 2386a156efdf71bc668093e31593713694cf076db895Torok Edwin val initialize : [ `Function ] t -> bool 2387d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2388d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 2389d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 2390d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 2391d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 2392a156efdf71bc668093e31593713694cf076db895Torok Edwin val run_function : llvalue -> [ `Function ] t -> bool 2393a156efdf71bc668093e31593713694cf076db895Torok Edwin 2394d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2395d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 2396d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 2397d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 2398d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 2399a156efdf71bc668093e31593713694cf076db895Torok Edwin val finalize : [ `Function ] t -> bool 2400d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2401d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 240216609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar the module. 2403d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 2404a156efdf71bc668093e31593713694cf076db895Torok Edwin val dispose : [< any ] t -> unit 2405d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 2406