1dfc58e3bcfcb8f37796b2ca1c289dd202f26d03cSylvestre Ledru(*===-- 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 12dfc58e3bcfcb8f37796b2ca1c289dd202f26d03cSylvestre Ledru 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 51cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines(** The kind id of metadata attached to an instruction. *) 52cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinestype llmdkind 53cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines 543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The kind of an [lltype], the result of [classify_type ty]. See the 553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Type::TypeID] enumeration. *) 56404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule TypeKind : sig 57404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 58404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Void 59eaf0608891cff27fe4cf08d180a6baf49e00f8aeBob Wilson | Half 60404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Float 61404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Double 62404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | X86fp80 63404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Fp128 64404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ppc_fp128 65404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Label 66404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Integer 67404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Function 68404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Struct 69404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Array 70404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Pointer 71404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Vector 7232eaeca34fe1e6080a2916e04c89874f0b273e31Bob Wilson | Metadata 738a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | X86_mmx 74404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linkage of a global value, accessed with {!linkage} and 773b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_linkage}. See [llvm::GlobalValue::LinkageTypes]. *) 78404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Linkage : sig 79404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 80404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen External 8114b9ed13e79d4b8fe97e2215e7ccf095a40463fdNick Lewycky | Available_externally 82404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Link_once 834aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Link_once_odr 848a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Link_once_odr_auto_hide 85404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Weak 864aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Weak_odr 87404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Appending 88404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Internal 894aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Private 90404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllimport 91404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Dllexport 92404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | External_weak 93404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Ghost 944aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Common 954aee0410003d873db0d5f76c34ccba7d2d828799Erick Tryzelaar | Linker_private 968a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Linker_private_weak 97404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 988ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The linker visibility of a global value, accessed with {!visibility} and 1003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!set_visibility}. See [llvm::GlobalValue::VisibilityTypes]. *) 101404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Visibility : sig 102404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 103404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen Default 104404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Hidden 105404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen | Protected 106404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 1078ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 1083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** The following calling convention values may be accessed with 1093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!function_call_conv} and {!set_function_call_conv}. Calling 1103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen conventions are open-ended. *) 1111475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenmodule CallConv : sig 1123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen val c : int (** [c] is the C calling convention. *) 1131475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val fast : int (** [fast] is the calling convention to allow LLVM 1140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen maximum optimization opportunities. Use only with 1153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen internal linkage. *) 1161475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val cold : int (** [cold] is the calling convention for 1173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen callee-save. *) 1181475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_stdcall : int (** [x86_stdcall] is the familiar stdcall calling 1193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1201475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksen val x86_fastcall : int (** [x86_fastcall] is the familiar fastcall calling 1213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen convention from C. *) 1221475142b93a618da72ec471e5ad7c1510c2feb37Gordon Henriksenend 12346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1246b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** The attribute kind of a function parameter, result or the function itself. 1256b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov See [llvm::Attribute::AttrKind]. *) 126e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsmodule Attribute : sig 127e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands type t = 128e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Zext 129e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Sext 130e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noreturn 131e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Inreg 132e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Structret 133e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nounwind 134e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Noalias 135e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Byval 136e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Nest 137e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readnone 138e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands | Readonly 139f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noinline 140f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Alwaysinline 141f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Optsize 142f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Ssp 143f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Sspreq 1440941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Alignment of int 145f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Nocapture 146f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noredzone 147f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Noimplicitfloat 148f24bfa7f794300e6889191e18d79f27db2829421Erick Tryzelaar | Naked 149570a4a5d9ca31f276a67502d1e0533d59d331feaJakob Stoklund Olesen | Inlinehint 1500941534c712d77243d9dda5e8c1d927563b4edffChris Lattner | Stackalignment of int 1510be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | ReturnsTwice 1520be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | UWTable 1530be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin | NonLazyBind 154e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sandsend 155e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for an integer comparison ([icmp]) instruction. 1573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::ICmpInst::Predicate] enumeration. *) 158404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Icmp : sig 159404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 160cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Eq (* Equal *) 161cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ne (* Not equal *) 162cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ugt (* Unsigned greater than *) 163cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Uge (* Unsigned greater or equal *) 164cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ult (* Unsigned less than *) 165cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ule (* Unsigned less or equal *) 166cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Sgt (* Signed greater than *) 167cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Sge (* Signed greater or equal *) 168cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Slt (* Signed less than *) 169cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Sle (* Signed less or equal *) 170404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 17146abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** The predicate for a floating-point comparison ([fcmp]) instruction. 173cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines Ordered means that neither operand is a QNAN while unordered means 174cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines that either operand may be a QNAN. 1753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::FCmpInst::Predicate] enumeration. *) 176404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenmodule Fcmp : sig 177404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksen type t = 178cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | False (* Always false *) 179cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Oeq (* Ordered and equal *) 180cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ogt (* Ordered and greater than *) 181cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Oge (* Ordered and greater or equal *) 182cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Olt (* Ordered and less than *) 183cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ole (* Ordered and less or equal *) 184cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | One (* Ordered and not equal *) 185cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ord (* Ordered (no operand is NaN) *) 186cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Uno (* Unordered (one operand at least is NaN) *) 187cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ueq (* Unordered and equal *) 188cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ugt (* Unordered and greater than *) 189cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Uge (* Unordered and greater or equal *) 190cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ult (* Unordered and less than *) 191cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Ule (* Unordered and less or equal *) 192cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | Une (* Unordered and not equal *) 193cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines | True (* Always true *) 194404a1942e43ca967700cc2608eb97b863add2677Gordon Henriksenend 19546abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1966563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin(** The opcodes for LLVM instructions and constant expressions. *) 1976563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinmodule Opcode : sig 1986563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin type t = 1996563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid (* not an instruction *) 2006563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Terminator Instructions *) 2016563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Ret 2026563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Br 2036563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Switch 2046563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IndirectBr 2056563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invoke 2066563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Invalid2 2076563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Unreachable 2086563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Standard Binary Operators *) 2096563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Add 2106563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FAdd 2116563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Sub 2126563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FSub 2136563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Mul 2146563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FMul 2156563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UDiv 2166563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SDiv 2176563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FDiv 2186563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | URem 2196563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SRem 2206563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FRem 2216563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Logical Operators *) 2226563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Shl 2236563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LShr 2246563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AShr 2256563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | And 2266563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Or 2276563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Xor 2286563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Memory Operators *) 2296563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Alloca 2306563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Load 2316563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Store 2326563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | GetElementPtr 2336563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Cast Operators *) 2346563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Trunc 2356563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ZExt 2366563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SExt 2376563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToUI 2386563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPToSI 2396563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UIToFP 2406563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | SIToFP 2416563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPTrunc 2426563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FPExt 2436563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PtrToInt 2446563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | IntToPtr 2456563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | BitCast 2466563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin (* Other Operators *) 2476563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ICmp 2486563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | FCmp 2496563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | PHI 2506563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Call 2516563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Select 2526563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp1 2536563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | UserOp2 2546563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | VAArg 2556563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractElement 2566563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertElement 2576563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ShuffleVector 2586563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | ExtractValue 2596563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | InsertValue 2606563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Fence 2616563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicCmpXchg 2626563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | AtomicRMW 2636563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | Resume 2646563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin | LandingPad 2658a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2668a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2678a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** The type of a clause of a [landingpad] instruction. 2688a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See [llvm::LandingPadInst::ClauseType]. *) 2698a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule LandingPadClauseTy : sig 2708a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2718a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Catch 2728a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Filter 2738a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2748a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2758a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** The thread local mode of a global value, accessed with {!thread_local_mode} 2768a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov and {!set_thread_local_mode}. 2778a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See [llvm::GlobalVariable::ThreadLocalMode]. *) 2788a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule ThreadLocalMode : sig 2798a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2808a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | None 2818a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | GeneralDynamic 2828a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | LocalDynamic 2838a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | InitialExec 2848a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | LocalExec 2858a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 2868a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 2878a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** The ordering of an atomic [load], [store], [cmpxchg], [atomicrmw] or 2888a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov [fence] instruction. See [llvm::AtomicOrdering]. *) 2898a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule AtomicOrdering : sig 2908a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 2918a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | NotAtomic 2928a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Unordered 2938a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Monotonic 2948a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Invalid (* removed due to API changes *) 2958a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Acquire 2968a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Release 2978a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | AcqiureRelease 2988a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | SequentiallyConsistent 2998a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovend 3008a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 3018a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** The opcode of an [atomicrmw] instruction. 3028a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See [llvm::AtomicRMWInst::BinOp]. *) 3038a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovmodule AtomicRMWBinOp : sig 3048a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov type t = 3058a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Xchg 3068a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Add 3078a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Sub 3088a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | And 3098a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Nand 3108a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Or 3118a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Xor 3128a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Max 3138a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | Min 3148a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | UMax 3158a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov | UMin 3166563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinend 3176563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin 3183dd16741864302af14b31b7f75375c09d8544a35Torok Edwin(** The kind of an [llvalue], the result of [classify_value v]. 319e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the various [LLVMIsA*] functions. *) 3203dd16741864302af14b31b7f75375c09d8544a35Torok Edwinmodule ValueKind : sig 3213dd16741864302af14b31b7f75375c09d8544a35Torok Edwin type t = 3223dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | NullValue 3233dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Argument 3243dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BasicBlock 3253dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | InlineAsm 3263dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDNode 3273dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | MDString 3283dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | BlockAddress 3293dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantAggregateZero 3303dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantArray 33134b4a8426131ec2deea45a1e0174f191c63295e2Peter Zotov | ConstantDataArray 33234b4a8426131ec2deea45a1e0174f191c63295e2Peter Zotov | ConstantDataVector 3333dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantExpr 3343dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantFP 3353dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantInt 3363dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantPointerNull 3373dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantStruct 3383dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | ConstantVector 3393dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Function 3403dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalAlias 3413dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | GlobalVariable 3423dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | UndefValue 3433dd16741864302af14b31b7f75375c09d8544a35Torok Edwin | Instruction of Opcode.t 3443dd16741864302af14b31b7f75375c09d8544a35Torok Edwinend 3453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 346e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 3474733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** {6 Iteration} *) 3484733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3494733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [Before b] and [At_end a] specify positions from the start of the ['b] list 350224fceb41f993fbc954345f053dab4e8caf28329Gordon Henriksen of [a]. [llpos] is used to specify positions in and for forward iteration 3514733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen through the various value lists maintained by the LLVM IR. *) 3524733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llpos = 3534733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_end of 'a 3544733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| Before of 'b 3554733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3564733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [After b] and [At_start a] specify positions from the end of the ['b] list 3574733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of [a]. [llrev_pos] is used for reverse iteration through the various value 3584733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen lists maintained by the LLVM IR. *) 3594733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksentype ('a, 'b) llrev_pos = 3604733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| At_start of 'a 3614733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen| After of 'b 3624733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3634733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 3643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Exceptions} *) 3653b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 366da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenexception IoError of string 367da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 3688ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 369a69773cead6dea09ade34342eafacf848ec41367Peter Zotov(** {6 Global configuration} *) 370a69773cead6dea09ade34342eafacf848ec41367Peter Zotov 371a69773cead6dea09ade34342eafacf848ec41367Peter Zotov(** [enable_pretty_stacktraces ()] enables LLVM's built-in stack trace code. 372a69773cead6dea09ade34342eafacf848ec41367Peter Zotov This intercepts the OS's crash signals and prints which component of LLVM 373a69773cead6dea09ade34342eafacf848ec41367Peter Zotov you were in at the time of the crash. *) 374a69773cead6dea09ade34342eafacf848ec41367Peter Zotovval enable_pretty_stacktrace : unit -> unit 375a69773cead6dea09ade34342eafacf848ec41367Peter Zotov 376a69773cead6dea09ade34342eafacf848ec41367Peter Zotov(** [install_fatal_error_handler f] installs [f] as LLVM's fatal error handler. 377a69773cead6dea09ade34342eafacf848ec41367Peter Zotov The handler will receive the reason for termination as a string. After 378a69773cead6dea09ade34342eafacf848ec41367Peter Zotov the handler has been executed, LLVM calls [exit(1)]. *) 379a69773cead6dea09ade34342eafacf848ec41367Peter Zotovval install_fatal_error_handler : (string -> unit) -> unit 380a69773cead6dea09ade34342eafacf848ec41367Peter Zotov 381a69773cead6dea09ade34342eafacf848ec41367Peter Zotov(** [reset_fatal_error_handler ()] resets LLVM's fatal error handler. *) 382a69773cead6dea09ade34342eafacf848ec41367Peter Zotovval reset_fatal_error_handler : unit -> unit 383a69773cead6dea09ade34342eafacf848ec41367Peter Zotov 3845371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** {6 Contexts} *) 3855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3865371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_context ()] creates a context for storing the "global" state in 3875371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar LLVM. See the constructor [llvm::LLVMContext]. *) 388a156efdf71bc668093e31593713694cf076db895Torok Edwinval create_context : unit -> llcontext 3895371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3905371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [destroy_context ()] destroys a context. See the destructor 3915371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::LLVMContext::~LLVMContext]. *) 392a156efdf71bc668093e31593713694cf076db895Torok Edwinval dispose_context : llcontext -> unit 3935371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 3945371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** See the function [llvm::getGlobalContext]. *) 395a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_context : unit -> llcontext 3965371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 39746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdkind_id context name] returns the MDKind ID that corresponds to the 39846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar name [name] in the context [context]. See the function 39946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::LLVMContext::getMDKindID]. *) 400cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesval mdkind_id : llcontext -> string -> llmdkind 40146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 4025371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 4033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Modules} *) 4048ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4055371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [create_module context id] creates a module with the supplied module ID in 4065371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. Modules are not garbage collected; it is mandatory 4075371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar to call {!dispose_module} to free memory. See the constructor 4085371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::Module::Module]. *) 409a156efdf71bc668093e31593713694cf076db895Torok Edwinval create_module : llcontext -> string -> llmodule 4108ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 4110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dispose_module m] destroys a module [m] and all of the IR objects it 4120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen contained. All references to subordinate objects are invalidated; 4130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen referencing them will invoke undefined behavior. See the destructor 4143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Module::~Module]. *) 415a156efdf71bc668093e31593713694cf076db895Torok Edwinval dispose_module : llmodule -> unit 4168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 417a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple m] is the target specifier for the module [m], something like 4183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i686-apple-darwin8]. See the method [llvm::Module::getTargetTriple]. *) 419a156efdf71bc668093e31593713694cf076db895Torok Edwinval target_triple: llmodule -> string 420a156efdf71bc668093e31593713694cf076db895Torok Edwin 421a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [target_triple triple m] changes the target specifier for the module [m] to 4223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the string [triple]. See the method [llvm::Module::setTargetTriple]. *) 423a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_target_triple: string -> llmodule -> unit 424a156efdf71bc668093e31593713694cf076db895Torok Edwin 425a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [data_layout m] is the data layout specifier for the module [m], something 426a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen like [e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-...-a0:0:64-f80:128:128]. See the 4273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen method [llvm::Module::getDataLayout]. *) 428a156efdf71bc668093e31593713694cf076db895Torok Edwinval data_layout: llmodule -> string 429a156efdf71bc668093e31593713694cf076db895Torok Edwin 430a353ffa7e556bfd2864474911174da691117f691Gordon Henriksen(** [set_data_layout s m] changes the data layout specifier for the module [m] 4313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to the string [s]. See the method [llvm::Module::setDataLayout]. *) 432a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_data_layout: string -> llmodule -> unit 433a156efdf71bc668093e31593713694cf076db895Torok Edwin 4343c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen(** [dump_module m] prints the .ll representation of the module [m] to standard 4353c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen error. See the method [llvm::Module::dump]. *) 436a156efdf71bc668093e31593713694cf076db895Torok Edwinval dump_module : llmodule -> unit 4373c5da81df86ec463c5604cb36d93e699a25c6b4dGordon Henriksen 4388a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [print_module f m] prints the .ll representation of the module [m] 4398a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov to file [f]. See the method [llvm::Module::print]. *) 4408a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval print_module : string -> llmodule -> unit 4418a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 4428a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [string_of_llmodule m] returns the .ll representation of the module [m] 4438a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov as a string. See the method [llvm::Module::print]. *) 4448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval string_of_llmodule : llmodule -> string 4458a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 4460941534c712d77243d9dda5e8c1d927563b4edffChris Lattner(** [set_module_inline_asm m asm] sets the inline assembler for the module. See 4470941534c712d77243d9dda5e8c1d927563b4edffChris Lattner the method [llvm::Module::setModuleInlineAsm]. *) 448a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_module_inline_asm : llmodule -> string -> unit 449a156efdf71bc668093e31593713694cf076db895Torok Edwin 450ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [module_context m] returns the context of the specified module. 451e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::Module::getContext] *) 452ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval module_context : llmodule -> llcontext 4538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 454e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 4553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Types} *) 4560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 4573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [classify_type ty] returns the {!TypeKind.t} corresponding to the type [ty]. 4583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Type::getTypeID]. *) 459a156efdf71bc668093e31593713694cf076db895Torok Edwinval classify_type : lltype -> TypeKind.t 4600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 461ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin(** [type_is_sized ty] returns whether the type has a size or not. 462e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov If it doesn't then it is not safe to call the [DataLayout::] methods on it. 463e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov *) 464ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwinval type_is_sized : lltype -> bool 465ff12c99d131789ccb9e8739963f4d8e0e95667d4Torok Edwin 4665371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [type_context ty] returns the {!llcontext} corresponding to the type [ty]. 4675371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar See the method [llvm::Type::getContext]. *) 468a156efdf71bc668093e31593713694cf076db895Torok Edwinval type_context : lltype -> llcontext 4695371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 4708a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [dump_type ty] prints the .ll representation of the type [ty] to standard 4718a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov error. See the method [llvm::Type::dump]. *) 4728a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval dump_type : lltype -> unit 4738a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 4743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [string_of_lltype ty] returns a string describing the type [ty]. *) 4758ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksenval string_of_lltype : lltype -> string 4768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 477e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 4783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on integer types} *) 4790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 480b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i1_type c] returns an integer type of bitwidth 1 in the context [c]. See 481b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int1Ty]. *) 482a156efdf71bc668093e31593713694cf076db895Torok Edwinval i1_type : llcontext -> lltype 4830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 484b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i8_type c] returns an integer type of bitwidth 8 in the context [c]. See 485b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int8Ty]. *) 486a156efdf71bc668093e31593713694cf076db895Torok Edwinval i8_type : llcontext -> lltype 4870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 488b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i16_type c] returns an integer type of bitwidth 16 in the context [c]. See 489b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int16Ty]. *) 490a156efdf71bc668093e31593713694cf076db895Torok Edwinval i16_type : llcontext -> lltype 4910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 492b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i32_type c] returns an integer type of bitwidth 32 in the context [c]. See 493b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int32Ty]. *) 494a156efdf71bc668093e31593713694cf076db895Torok Edwinval i32_type : llcontext -> lltype 4950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 496b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [i64_type c] returns an integer type of bitwidth 64 in the context [c]. See 497b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::Int64Ty]. *) 498a156efdf71bc668093e31593713694cf076db895Torok Edwinval i64_type : llcontext -> lltype 4990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 500b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_type c n] returns an integer type of bitwidth [n] in the context 501b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See the method [llvm::IntegerType::get]. *) 502a156efdf71bc668093e31593713694cf076db895Torok Edwinval integer_type : llcontext -> int -> lltype 5030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 504b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [integer_bitwidth c ty] returns the number of bits in the integer type [ty] 505b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar in the context [c]. See the method [llvm::IntegerType::getBitWidth]. *) 506a156efdf71bc668093e31593713694cf076db895Torok Edwinval integer_bitwidth : lltype -> int 5078ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5093b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on real types} *) 5103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 511b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [float_type c] returns the IEEE 32-bit floating point type in the context 512b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FloatTy]. *) 513a156efdf71bc668093e31593713694cf076db895Torok Edwinval float_type : llcontext -> lltype 5140465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 515b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [double_type c] returns the IEEE 64-bit floating point type in the context 516b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::DoubleTy]. *) 517a156efdf71bc668093e31593713694cf076db895Torok Edwinval double_type : llcontext -> lltype 5180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 519b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [x86fp80_type c] returns the x87 80-bit floating point type in the context 520b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::X86_FP80Ty]. *) 521a156efdf71bc668093e31593713694cf076db895Torok Edwinval x86fp80_type : llcontext -> lltype 5220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 523b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [fp128_type c] returns the IEEE 128-bit floating point type in the context 524b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [c]. See [llvm::Type::FP128Ty]. *) 525a156efdf71bc668093e31593713694cf076db895Torok Edwinval fp128_type : llcontext -> lltype 5260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 527b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [ppc_fp128_type c] returns the PowerPC 128-bit floating point type in the 528b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar context [c]. See [llvm::Type::PPC_FP128Ty]. *) 529a156efdf71bc668093e31593713694cf076db895Torok Edwinval ppc_fp128_type : llcontext -> lltype 5308ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5323b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on function types} *) 5330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_type ret_ty param_tys] returns the function type returning 5350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret_ty] and taking [param_tys] as parameters. 5363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 537a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_type : lltype -> lltype array -> lltype 5380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 53948488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [var_arg_function_type ret_ty param_tys] is just like 5400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [function_type ret_ty param_tys] except that it returns the function type 5410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen which also takes a variable number of arguments. 5423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::get]. *) 543a156efdf71bc668093e31593713694cf076db895Torok Edwinval var_arg_function_type : lltype -> lltype array -> lltype 544a156efdf71bc668093e31593713694cf076db895Torok Edwin 5450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_var_arg fty] returns [true] if [fty] is a varargs function type, [false] 5463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. See the method [llvm::FunctionType::isVarArg]. *) 547a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_var_arg : lltype -> bool 5480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [return_type fty] gets the return type of the function type [fty]. 5503b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getReturnType]. *) 551a156efdf71bc668093e31593713694cf076db895Torok Edwinval return_type : lltype -> lltype 5520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [param_types fty] gets the parameter types of the function type [fty]. 5543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::FunctionType::getParamType]. *) 555a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_types : lltype -> lltype array 5568ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 5583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on struct types} *) 5590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5605371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [struct_type context tys] returns the structure type in the context 5615371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [context] containing in the types in the array [tys]. See the method 5625371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 563a156efdf71bc668093e31593713694cf076db895Torok Edwinval struct_type : llcontext -> lltype array -> lltype 564a156efdf71bc668093e31593713694cf076db895Torok Edwin 5655371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [packed_struct_type context ys] returns the packed structure type in the 5665371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar context [context] containing in the types in the array [tys]. See the method 5675371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::StructType::get]. *) 568a156efdf71bc668093e31593713694cf076db895Torok Edwinval packed_struct_type : llcontext -> lltype array -> lltype 569a156efdf71bc668093e31593713694cf076db895Torok Edwin 570c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin(** [struct_name ty] returns the name of the named structure type [ty], 571e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov or None if the structure type is not named *) 572c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwinval struct_name : lltype -> string option 573c44943ed4f4f2d44b6668e6b51eb355f8310660cTorok Edwin 5746b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [named_struct_type context name] returns the named structure type [name] 575e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov in the context [context]. 576e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::StructType::get]. *) 5776b228e506f42972c003599f4873a24910f8a530aTorok Edwinval named_struct_type : llcontext -> string -> lltype 5786b228e506f42972c003599f4873a24910f8a530aTorok Edwin 5796b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [struct_set_body ty elts ispacked] sets the body of the named struct [ty] 580e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov to the [elts] elements. 581e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the moethd [llvm::StructType::setBody]. *) 5826b228e506f42972c003599f4873a24910f8a530aTorok Edwinval struct_set_body : lltype -> lltype array -> bool -> unit 5830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5841940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar(** [struct_element_types sty] returns the constituent types of the struct type 5851940dd10dd6b79e3332f384756c268b85d0ad400Erick Tryzelaar [sty]. See the method [llvm::StructType::getElementType]. *) 586a156efdf71bc668093e31593713694cf076db895Torok Edwinval struct_element_types : lltype -> lltype array 587a156efdf71bc668093e31593713694cf076db895Torok Edwin 5880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_packed sty] returns [true] if the structure type [sty] is packed, 5893b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [false] otherwise. See the method [llvm::StructType::isPacked]. *) 590a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_packed : lltype -> bool 5918ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 5926b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [is_opaque sty] returns [true] if the structure type [sty] is opaque. 5936b228e506f42972c003599f4873a24910f8a530aTorok Edwin [false] otherwise. See the method [llvm::StructType::isOpaque]. *) 5946b228e506f42972c003599f4873a24910f8a530aTorok Edwinval is_opaque : lltype -> bool 5953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 596e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 5973b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on pointer, vector, and array types} *) 5980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 5990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [array_type ty n] returns the array type containing [n] elements of type 6003b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::ArrayType::get]. *) 601a156efdf71bc668093e31593713694cf076db895Torok Edwinval array_type : lltype -> int -> lltype 6020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [pointer_type ty] returns the pointer type referencing objects of type 60457cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen [ty] in the default address space (0). 6053b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::getUnqual]. *) 606a156efdf71bc668093e31593713694cf076db895Torok Edwinval pointer_type : lltype -> lltype 60757cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 60857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [qualified_pointer_type ty as] returns the pointer type referencing objects 60957cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen of type [ty] in address space [as]. 6103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PointerType::get]. *) 611a156efdf71bc668093e31593713694cf076db895Torok Edwinval qualified_pointer_type : lltype -> int -> lltype 612a156efdf71bc668093e31593713694cf076db895Torok Edwin 6130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [vector_type ty n] returns the array type containing [n] elements of the 6143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen primitive type [ty]. See the method [llvm::ArrayType::get]. *) 615a156efdf71bc668093e31593713694cf076db895Torok Edwinval vector_type : lltype -> int -> lltype 6168ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element type of the pointer, vector, or array 6183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen type [ty]. See the method [llvm::SequentialType::get]. *) 619a156efdf71bc668093e31593713694cf076db895Torok Edwinval element_type : lltype -> lltype 6200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type aty] returns the element count of the array type [aty]. 6223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ArrayType::getNumElements]. *) 623a156efdf71bc668093e31593713694cf076db895Torok Edwinval array_length : lltype -> int 6240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 62557cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen(** [address_space pty] returns the address space qualifier of the pointer type 6263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [pty]. See the method [llvm::PointerType::getAddressSpace]. *) 627a156efdf71bc668093e31593713694cf076db895Torok Edwinval address_space : lltype -> int 62857cebeec7ba08b55f29f5bf98ad0a3a17e9d0c71Gordon Henriksen 6290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [element_type ty] returns the element count of the vector type [ty]. 6303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::VectorType::getNumElements]. *) 631a156efdf71bc668093e31593713694cf076db895Torok Edwinval vector_size : lltype -> int 6328ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 6343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on other types} *) 6350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 636b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [void_type c] creates a type of a function which does not return any 637b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value in the context [c]. See [llvm::Type::VoidTy]. *) 638a156efdf71bc668093e31593713694cf076db895Torok Edwinval void_type : llcontext -> lltype 6390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 640b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [label_type c] creates a type of a basic block in the context [c]. See 641b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::Type::LabelTy]. *) 642a156efdf71bc668093e31593713694cf076db895Torok Edwinval label_type : llcontext -> lltype 6438ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 6448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [x86_mmx_type c] returns the x86 64-bit MMX register type in the 6458a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov context [c]. See [llvm::Type::X86_MMXTy]. *) 6468a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval x86_mmx_type : llcontext -> lltype 6478a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 648ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [type_by_name m name] returns the specified type from the current module 649e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov if it exists. 650e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::Module::getTypeByName] *) 651ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval type_by_name : llmodule -> string -> lltype option 652ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 653e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 6543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(* {6 Values} *) 6550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [type_of v] returns the type of the value [v]. 6573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getType]. *) 658a156efdf71bc668093e31593713694cf076db895Torok Edwinval type_of : llvalue -> lltype 6590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6606b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [classify_value v] returns the kind of the value [v]. *) 6613dd16741864302af14b31b7f75375c09d8544a35Torok Edwinval classify_value : llvalue -> ValueKind.t 6623dd16741864302af14b31b7f75375c09d8544a35Torok Edwin 6630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_name v] returns the name of the value [v]. For global values, this is 6640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the symbol name. For instructions and basic blocks, it is the SSA register 6650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen name. It is meaningless for constants. 6663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Value::getName]. *) 667a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_name : llvalue -> string 6680465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6693b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [set_value_name n v] sets the name of the value [v] to [n]. See the method 6703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::Value::setName]. *) 671a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_value_name : string -> llvalue -> unit 6720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 6730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [dump_value v] prints the .ll representation of the value [v] to standard 6743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen error. See the method [llvm::Value::dump]. *) 675a156efdf71bc668093e31593713694cf076db895Torok Edwinval dump_value : llvalue -> unit 6768ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 677ba0c7cd012b064e2d8009480f9ae6f7d75e00e13Peter Zotov(** [string_of_llvalue v] returns a string describing the value [v]. *) 678ba0c7cd012b064e2d8009480f9ae6f7d75e00e13Peter Zotovval string_of_llvalue : llvalue -> string 679ba0c7cd012b064e2d8009480f9ae6f7d75e00e13Peter Zotov 68068bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaar(** [replace_all_uses_with old new] replaces all uses of the value [old] 681e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov with the value [new]. See the method [llvm::Value::replaceAllUsesWith]. *) 682a156efdf71bc668093e31593713694cf076db895Torok Edwinval replace_all_uses_with : llvalue -> llvalue -> unit 683a156efdf71bc668093e31593713694cf076db895Torok Edwin 68468bab9833db8d524398f7feee1ce4bda9df320abErick Tryzelaar 685705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(* {6 Uses} *) 686705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 687705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [use_begin v] returns the first position in the use list for the value [v]. 688705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [use_begin] and [use_succ] can e used to iterate over the use list in order. 689705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Value::use_begin]. *) 690a156efdf71bc668093e31593713694cf076db895Torok Edwinval use_begin : llvalue -> lluse option 691705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 692705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [use_succ u] returns the use list position succeeding [u]. 693705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::use_value_iterator::operator++]. *) 694a156efdf71bc668093e31593713694cf076db895Torok Edwinval use_succ : lluse -> lluse option 695705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 696705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [user u] returns the user of the use [u]. 697705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Use::getUser]. *) 698a156efdf71bc668093e31593713694cf076db895Torok Edwinval user : lluse -> llvalue 699705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 700705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [used_value u] returns the usee of the use [u]. 701705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar See the method [llvm::Use::getUsedValue]. *) 702a156efdf71bc668093e31593713694cf076db895Torok Edwinval used_value : lluse -> llvalue 703705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 704705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [iter_uses f v] applies function [f] to each of the users of the value [v] 705705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar in order. Tail recursive. *) 706705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval iter_uses : (lluse -> unit) -> llvalue -> unit 707705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 708705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [fold_left_uses f init v] is [f (... (f init u1) ...) uN] where 709705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [u1,...,uN] are the users of the value [v]. Tail recursive. *) 710705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval fold_left_uses : ('a -> lluse -> 'a) -> 'a -> llvalue -> 'a 711705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 712705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar(** [fold_right_uses f v init] is [f u1 (... (f uN init) ...)] where 713705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar [u1,...,uN] are the users of the value [v]. Not tail recursive. *) 714705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaarval fold_right_uses : (lluse -> 'a -> 'a) -> llvalue -> 'a -> 'a 715705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 716705443ffd3f67018c1ec387014262566502a9ee3Erick Tryzelaar 717b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar(* {6 Users} *) 718b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 719b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar(** [operand v i] returns the operand at index [i] for the value [v]. See the 720b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar method [llvm::User::getOperand]. *) 721a156efdf71bc668093e31593713694cf076db895Torok Edwinval operand : llvalue -> int -> llvalue 722b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 723f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar(** [set_operand v i o] sets the operand of the value [v] at the index [i] to 724f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar the value [o]. 725f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar See the method [llvm::User::setOperand]. *) 726a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_operand : llvalue -> int -> llvalue -> unit 727f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar 728f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar(** [num_operands v] returns the number of operands for the value [v]. 729f7af931930dfab74b8a72b195e53df34b4ea2480Erick Tryzelaar See the method [llvm::User::getNumOperands]. *) 730a156efdf71bc668093e31593713694cf076db895Torok Edwinval num_operands : llvalue -> int 731b65c5f2ec347db8342cb7e42d072b0088b74fa73Erick Tryzelaar 732e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 7333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on constants of (mostly) any type} *) 7340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_constant v] returns [true] if the value [v] is a constant, [false] 7363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<Constant>]. *) 737a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_constant : llvalue -> bool 7380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_null ty] returns the constant null (zero) of the type [ty]. 7403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::getNullValue]. *) 741a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_null : lltype -> llvalue 7420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_all_ones ty] returns the constant '-1' of the integer or vector type 7443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [ty]. See the method [llvm::Constant::getAllOnesValue]. *) 745a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_all_ones : (*int|vec*)lltype -> llvalue 7460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7475b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar(** [const_pointer_null ty] returns the constant null (zero) pointer of the type 7485b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar [ty]. See the method [llvm::ConstantPointerNull::get]. *) 749a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_pointer_null : lltype -> llvalue 7505b0a7741ad262315d6365250a2da2edb8ba37e69Erick Tryzelaar 7510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [undef ty] returns the undefined value of the type [ty]. 7523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::UndefValue::get]. *) 753a156efdf71bc668093e31593713694cf076db895Torok Edwinval undef : lltype -> llvalue 7540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_null v] returns [true] if the value [v] is the null (zero) value. 7563b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Constant::isNullValue]. *) 757a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_null : llvalue -> bool 7580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 7590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_undef v] returns [true] if the value [v] is an undefined value, [false] 7603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen otherwise. Similar to [llvm::isa<UndefValue>]. *) 761a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_undef : llvalue -> bool 7628ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 7636b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [constexpr_opcode v] returns an [Opcode.t] corresponding to constexpr 7646b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov value [v], or [Opcode.Invalid] if [v] is not a constexpr. *) 7656563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval constexpr_opcode : llvalue -> Opcode.t 766e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 767e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 76846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on instructions} *) 76946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 77046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [has_metadata i] returns whether or not the instruction [i] has any 77146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar metadata attached to it. See the function 77246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::hasMetadata]. *) 773a156efdf71bc668093e31593713694cf076db895Torok Edwinval has_metadata : llvalue -> bool 77446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 77546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [metadata i kind] optionally returns the metadata associated with the 77646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar kind [kind] in the instruction [i] See the function 77746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [llvm::Instruction::getMetadata]. *) 778cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesval metadata : llvalue -> llmdkind -> llvalue option 77946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 78046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_metadata i kind md] sets the metadata [md] of kind [kind] in the 78146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 782cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesval set_metadata : llvalue -> llmdkind -> llvalue -> unit 78346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 78446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_metadata i kind] clears the metadata of kind [kind] in the 78546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar instruction [i]. See the function [llvm::Instruction::setMetadata]. *) 786cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesval clear_metadata : llvalue -> llmdkind -> unit 78746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 78846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 78946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Operations on metadata} *) 79046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 79146c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdstring c s] returns the MDString of the string [s] in the context [c]. 79246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 793a156efdf71bc668093e31593713694cf076db895Torok Edwinval mdstring : llcontext -> string -> llvalue 79446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 79546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [mdnode c elts] returns the MDNode containing the values [elts] in the 79646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar context [c]. 79746c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::MDNode::get]. *) 798a156efdf71bc668093e31593713694cf076db895Torok Edwinval mdnode : llcontext -> llvalue array -> llvalue 79946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 8004f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin(** [get_mdstring v] returns the MDString. 801e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::MDString::getString] *) 8024f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinval get_mdstring : llvalue -> string option 8034f661ab0fb87f97c4a12912249c3c366df882102Torok Edwin 8046b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [get_named_metadata m name] returns all the MDNodes belonging to the named 805e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov metadata (if any). 806e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::NamedMDNode::getOperand]. *) 8074f661ab0fb87f97c4a12912249c3c366df882102Torok Edwinval get_named_metadata : llmodule -> string -> llvalue array 80846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 8098a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [add_named_metadata_operand m name v] adds [v] as the last operand of 8108a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov metadata named [name] in module [m]. If the metadata does not exist, 8118a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov it is created. 8128a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the methods [llvm::Module::getNamedMetadata()] and 8138a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov [llvm::MDNode::addOperand()]. *) 8148a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval add_named_metadata_operand : llmodule -> string -> llvalue -> unit 8158a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 816e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 8173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on scalar constants} *) 8180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_int ty i] returns the integer constant of type [ty] and value [i]. 8203b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantInt::get]. *) 821a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_int : lltype -> int -> llvalue 8220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_of_int64 ty i] returns the integer constant of type [ty] and value 8243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [i]. See the method [llvm::ConstantInt::get]. *) 825a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_of_int64 : lltype -> Int64.t -> bool -> llvalue 826a156efdf71bc668093e31593713694cf076db895Torok Edwin 8276563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwin(** [int64_of_const c] returns the int64 value of the [c] constant integer. 828e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov None is returned if this is not an integer constant, or bitwidth exceeds 64. 829e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::ConstantInt::getSExtValue].*) 8306563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval int64_of_const : llvalue -> Int64.t option 8310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 83245d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_int_of_string ty s r] returns the integer constant of type [ty] and 833e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov value [s], with the radix [r]. See the method [llvm::ConstantInt::get]. *) 834a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_int_of_string : lltype -> string -> int -> llvalue 835a156efdf71bc668093e31593713694cf076db895Torok Edwin 8360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_float ty n] returns the floating point constant of type [ty] and 8372b526fec6a03be58f56e885af6b53c197973e573Erick Tryzelaar value [n]. See the method [llvm::ConstantFP::get]. *) 838a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_float : lltype -> float -> llvalue 8398ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 84045d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar(** [const_float_of_string ty s] returns the floating point constant of type 84145d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar [ty] and value [n]. See the method [llvm::ConstantFP::get]. *) 842a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_float_of_string : lltype -> string -> llvalue 843a156efdf71bc668093e31593713694cf076db895Torok Edwin 84445d6ac2cc13f7881687c2d7f03f9b9892fd85e6eErick Tryzelaar 8453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on composite constants} *) 8460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 847b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_string c s] returns the constant [i8] array with the values of the 848b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] in the context [c]. The array is not 849b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar null-terminated (but see {!const_stringz}). This value can in turn be used 850b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar as the initializer for a global variable. See the method 851b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar [llvm::ConstantArray::get]. *) 852a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_string : llcontext -> string -> llvalue 8530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 854b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [const_stringz c s] returns the constant [i8] array with the values of the 855b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar characters in the string [s] and a null terminator in the context [c]. This 856b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar value can in turn be used as the initializer for a global variable. 8573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 858a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_stringz : llcontext -> string -> llvalue 8590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_array ty elts] returns the constant array of type 8610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [array_type ty (Array.length elts)] and containing the values [elts]. 8620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen This value can in turn be used as the initializer for a global variable. 8633b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantArray::get]. *) 864a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_array : lltype -> llvalue array -> llvalue 8650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 8665371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_struct context elts] returns the structured constant of type 8675371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [struct_type (Array.map type_of elts)] and containing the values [elts] 8685371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar in the context [context]. This value can in turn be used as the initializer 8696b228e506f42972c003599f4873a24910f8a530aTorok Edwin for a global variable. See the method [llvm::ConstantStruct::getAnon]. *) 870a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_struct : llcontext -> llvalue array -> llvalue 871a156efdf71bc668093e31593713694cf076db895Torok Edwin 8726b228e506f42972c003599f4873a24910f8a530aTorok Edwin(** [const_named_struct namedty elts] returns the structured constant of type 8736b228e506f42972c003599f4873a24910f8a530aTorok Edwin [namedty] (which must be a named structure type) and containing the values [elts]. 8746b228e506f42972c003599f4873a24910f8a530aTorok Edwin This value can in turn be used as the initializer 8756b228e506f42972c003599f4873a24910f8a530aTorok Edwin for a global variable. See the method [llvm::ConstantStruct::get]. *) 8766b228e506f42972c003599f4873a24910f8a530aTorok Edwinval const_named_struct : lltype -> llvalue array -> llvalue 8775371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar 8785371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [const_packed_struct context elts] returns the structured constant of 8795371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar type {!packed_struct_type} [(Array.map type_of elts)] and containing the 8805371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar values [elts] in the context [context]. This value can in turn be used as 8815371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the initializer for a global variable. See the method 8825371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar [llvm::ConstantStruct::get]. *) 883a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_packed_struct : llcontext -> llvalue array -> llvalue 884a156efdf71bc668093e31593713694cf076db895Torok Edwin 8850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_vector elts] returns the vector constant of type 8860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [vector_type (type_of elts.(0)) (Array.length elts)] and containing the 8873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen values [elts]. See the method [llvm::ConstantVector::get]. *) 888a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_vector : llvalue array -> llvalue 8898ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 8903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 8913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Constant expressions} *) 8920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 893ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands(** [align_of ty] returns the alignof constant for the type [ty]. This is 894ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands equivalent to [const_ptrtoint (const_gep (const_null (pointer_type {i8,ty})) 895ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 0) (const_int i32_type 1)) i32_type], but considerably 896ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands more readable. See the method [llvm::ConstantExpr::getAlignOf]. *) 897a156efdf71bc668093e31593713694cf076db895Torok Edwinval align_of : lltype -> llvalue 898ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands 8990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [size_of ty] returns the sizeof constant for the type [ty]. This is 9000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen equivalent to [const_ptrtoint (const_gep (const_null (pointer_type ty)) 901ef854af5bd231ae0c059eb4f07d13352d2a50a9dDuncan Sands (const_int i32_type 1)) i64_type], but considerably more readable. 9023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSizeOf]. *) 903a156efdf71bc668093e31593713694cf076db895Torok Edwinval size_of : lltype -> llvalue 9040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_neg c] returns the arithmetic negation of the constant [c]. 9063b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNeg]. *) 907a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_neg : llvalue -> llvalue 9080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 90919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_neg c] returns the arithmetic negation of the constant [c] with 91019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the negation overflows. 91119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWNeg]. *) 912a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_neg : llvalue -> llvalue 91319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 91419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_neg c] returns the arithmetic negation of the constant [c] with 91519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the negation overflows. 91619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNUWNeg]. *) 917a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_neg : llvalue -> llvalue 91819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 9191b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fneg c] returns the arithmetic negation of the constant float [c]. 9201b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFNeg]. *) 921a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fneg : llvalue -> llvalue 9221b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_not c] returns the bitwise inverse of the constant [c]. 9243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getNot]. *) 925a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_not : llvalue -> llvalue 9260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_add c1 c2] returns the constant sum of two constants. 9283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAdd]. *) 929a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_add : llvalue -> llvalue -> llvalue 9300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_nsw_add c1 c2] returns the constant sum of two constants with no 9321b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed wrapping. The result is undefined if the sum overflows. 9331b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 934a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_add : llvalue -> llvalue -> llvalue 9351b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 93619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_add c1 c2] returns the constant sum of two constants with no 93719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar unsigned wrapping. The result is undefined if the sum overflows. 93819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWAdd]. *) 939a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_add : llvalue -> llvalue -> llvalue 94019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 9411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fadd c1 c2] returns the constant sum of two constant floats. 9421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFAdd]. *) 943a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fadd : llvalue -> llvalue -> llvalue 9441b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sub c1 c2] returns the constant difference, [c1 - c2], of two 9463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen constants. See the method [llvm::ConstantExpr::getSub]. *) 947a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sub : llvalue -> llvalue -> llvalue 9480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 94919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_sub c1 c2] returns the constant difference of two constants with 95019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 95119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 952a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_sub : llvalue -> llvalue -> llvalue 95319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 95419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_sub c1 c2] returns the constant difference of two constants with 95519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 95619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWSub]. *) 957a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_sub : llvalue -> llvalue -> llvalue 95819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 9591b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fsub c1 c2] returns the constant difference, [c1 - c2], of two 9601b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant floats. See the method [llvm::ConstantExpr::getFSub]. *) 961a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fsub : llvalue -> llvalue -> llvalue 9621b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_mul c1 c2] returns the constant product of two constants. 9643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getMul]. *) 965a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_mul : llvalue -> llvalue -> llvalue 9660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 96719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nsw_mul c1 c2] returns the constant product of two constants with 96819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no signed wrapping. The result is undefined if the sum overflows. 96919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 970a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nsw_mul : llvalue -> llvalue -> llvalue 97119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 97219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [const_nuw_mul c1 c2] returns the constant product of two constants with 97319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar no unsigned wrapping. The result is undefined if the sum overflows. 97419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::ConstantExpr::getNSWMul]. *) 975a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_nuw_mul : llvalue -> llvalue -> llvalue 97619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar 9771b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fmul c1 c2] returns the constant product of two constants floats. 9781b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFMul]. *) 979a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fmul : llvalue -> llvalue -> llvalue 9801b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_udiv c1 c2] returns the constant quotient [c1 / c2] of two unsigned 9820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 9833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUDiv]. *) 984a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_udiv : llvalue -> llvalue -> llvalue 9850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sdiv c1 c2] returns the constant quotient [c1 / c2] of two signed 9870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constants. 9881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSDiv]. *) 989a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sdiv : llvalue -> llvalue -> llvalue 9900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 9911b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_exact_sdiv c1 c2] returns the constant quotient [c1 / c2] of two 9921b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar signed integer constants. The result is undefined if the result is rounded 9935371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar or overflows. See the method [llvm::ConstantExpr::getExactSDiv]. *) 994a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_exact_sdiv : llvalue -> llvalue -> llvalue 9951b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar 9960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fdiv c1 c2] returns the constant quotient [c1 / c2] of two floating 9970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants. 9983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFDiv]. *) 999a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fdiv : llvalue -> llvalue -> llvalue 10000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10011b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_urem c1 c2] returns the constant remainder [c1 MOD c2] of two 10020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constants. 10033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getURem]. *) 1004a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_urem : llvalue -> llvalue -> llvalue 10050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10061b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_srem c1 c2] returns the constant remainder [c1 MOD c2] of two 10070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constants. 10083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSRem]. *) 1009a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_srem : llvalue -> llvalue -> llvalue 10100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_frem c1 c2] returns the constant remainder [c1 MOD c2] of two 10120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed floating point constants. 10133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFRem]. *) 1014a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_frem : llvalue -> llvalue -> llvalue 10150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_and c1 c2] returns the constant bitwise [AND] of two integer 10170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 10183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAnd]. *) 1019a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_and : llvalue -> llvalue -> llvalue 10200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_or c1 c2] returns the constant bitwise [OR] of two integer 10220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 10233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getOr]. *) 1024a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_or : llvalue -> llvalue -> llvalue 10250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_xor c1 c2] returns the constant bitwise [XOR] of two integer 10270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants. 10283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getXor]. *) 1029a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_xor : llvalue -> llvalue -> llvalue 10300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_icmp pred c1 c2] returns the constant comparison of two integer 10320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constants, [c1 pred c2]. 10333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getICmp]. *) 1034a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_icmp : Icmp.t -> llvalue -> llvalue -> llvalue 1035a156efdf71bc668093e31593713694cf076db895Torok Edwin 10360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fcmp pred c1 c2] returns the constant comparison of two floating 10370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen point constants, [c1 pred c2]. 10383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFCmp]. *) 1039a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fcmp : Fcmp.t -> llvalue -> llvalue -> llvalue 1040a156efdf71bc668093e31593713694cf076db895Torok Edwin 10410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shl c1 c2] returns the constant integer [c1] left-shifted by the 10420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2]. 10433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShl]. *) 1044a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_shl : llvalue -> llvalue -> llvalue 10450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_lshr c1 c2] returns the constant integer [c1] right-shifted by the 10470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with zero extension. 10483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getLShr]. *) 1049a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_lshr : llvalue -> llvalue -> llvalue 10500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ashr c1 c2] returns the constant integer [c1] right-shifted by the 10520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integer [c2] with sign extension. 10533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getAShr]. *) 1054a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_ashr : llvalue -> llvalue -> llvalue 10550465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1056cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines(** [const_gep pc indices] returns the constant [getElementPtr] of [pc] with the 10570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant integers indices from the array [indices]. 10583b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getGetElementPtr]. *) 1059a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_gep : llvalue -> llvalue array -> llvalue 10600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1061cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines(** [const_in_bounds_gep pc indices] returns the constant [getElementPtr] of [pc] 10621b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar with the constant integers indices from the array [indices]. 10631b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getInBoundsGetElementPtr]. *) 1064a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_in_bounds_gep : llvalue -> llvalue array -> llvalue 1065a156efdf71bc668093e31593713694cf076db895Torok Edwin 10660465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_trunc c ty] returns the constant truncation of integer constant [c] 10670465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to the smaller integer type [ty]. 10683b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getTrunc]. *) 1069a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_trunc : llvalue -> lltype -> llvalue 10700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sext c ty] returns the constant sign extension of integer constant 10720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 10733b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSExt]. *) 1074a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sext : llvalue -> lltype -> llvalue 10750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_zext c ty] returns the constant zero extension of integer constant 10770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger integer type [ty]. 10783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getZExt]. *) 1079a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_zext : llvalue -> lltype -> llvalue 10800465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptrunc c ty] returns the constant truncation of floating point 10820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [c] to the smaller floating point type [ty]. 10833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPTrunc]. *) 1084a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptrunc : llvalue -> lltype -> llvalue 10850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fpext c ty] returns the constant extension of floating point constant 10870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] to the larger floating point type [ty]. 10883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPExt]. *) 1089a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fpext : llvalue -> lltype -> llvalue 10900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_uitofp c ty] returns the constant floating point conversion of 10920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen unsigned integer constant [c] to the floating point type [ty]. 10933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getUIToFP]. *) 1094a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_uitofp : llvalue -> lltype -> llvalue 10950465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 10960465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_sitofp c ty] returns the constant floating point conversion of 10970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen signed integer constant [c] to the floating point type [ty]. 10983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSIToFP]. *) 1099a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sitofp : llvalue -> lltype -> llvalue 11000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 11020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 11033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToUI]. *) 1104a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptoui : llvalue -> lltype -> llvalue 11050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_fptoui c ty] returns the constant unsigned integer conversion of 11070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen floating point constant [c] to integer type [ty]. 11083b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getFPToSI]. *) 1109a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fptosi : llvalue -> lltype -> llvalue 11100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_ptrtoint c ty] returns the constant integer conversion of 11120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen pointer constant [c] to integer type [ty]. 11133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getPtrToInt]. *) 1114a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_ptrtoint : llvalue -> lltype -> llvalue 11150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_inttoptr c ty] returns the constant pointer conversion of 11170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen integer constant [c] to pointer type [ty]. 11183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getIntToPtr]. *) 1119a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_inttoptr : llvalue -> lltype -> llvalue 11200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_bitcast c ty] returns the constant bitwise conversion of constant [c] 11220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen to type [ty] of equal size. 11233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getBitCast]. *) 1124a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_bitcast : llvalue -> lltype -> llvalue 11250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 11261b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_zext_or_bitcast c ty] returns a constant zext or bitwise cast 11271b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 11281b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getZExtOrBitCast]. *) 1129a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_zext_or_bitcast : llvalue -> lltype -> llvalue 1130a156efdf71bc668093e31593713694cf076db895Torok Edwin 11311b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_sext_or_bitcast c ty] returns a constant sext or bitwise cast 11321b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 11331b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getSExtOrBitCast]. *) 1134a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_sext_or_bitcast : llvalue -> lltype -> llvalue 1135a156efdf71bc668093e31593713694cf076db895Torok Edwin 11361b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_trunc_or_bitcast c ty] returns a constant trunc or bitwise cast 11371b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar conversion of constant [c] to type [ty]. 11381b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getTruncOrBitCast]. *) 1139a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_trunc_or_bitcast : llvalue -> lltype -> llvalue 1140a156efdf71bc668093e31593713694cf076db895Torok Edwin 11411b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_pointercast c ty] returns a constant bitcast or a pointer-to-int 11421b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar cast conversion of constant [c] to type [ty] of equal size. 11431b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getPointerCast]. *) 1144a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_pointercast : llvalue -> lltype -> llvalue 1145a156efdf71bc668093e31593713694cf076db895Torok Edwin 1146c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov(** [const_intcast c ty ~is_signed] returns a constant sext/zext, bitcast, 1147c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov or trunc for integer -> integer casts of constant [c] to type [ty]. 1148c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov When converting a narrower value to a wider one, whether sext or zext 1149c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov will be used is controlled by [is_signed]. 1150c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotov See the method [llvm::ConstantExpr::getIntegerCast]. *) 1151c8ac229cc8349685117f68bc6f1da04f98015cd6Peter Zotovval const_intcast : llvalue -> lltype -> is_signed:bool -> llvalue 1152a156efdf71bc668093e31593713694cf076db895Torok Edwin 11531b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_fpcast c ty] returns a constant fpext, bitcast, or fptrunc for fp -> 11545371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar fp casts of constant [c] to type [ty]. 11551b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar See the method [llvm::ConstantExpr::getFPCast]. *) 1156a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_fpcast : llvalue -> lltype -> llvalue 1157a156efdf71bc668093e31593713694cf076db895Torok Edwin 11580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_select cond t f] returns the constant conditional which returns value 11590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [t] if the boolean constant [cond] is true and the value [f] otherwise. 11603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getSelect]. *) 1161a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_select : llvalue -> llvalue -> llvalue -> llvalue 1162a156efdf71bc668093e31593713694cf076db895Torok Edwin 11630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_extractelement vec i] returns the constant [i]th element of 11640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant vector [vec]. [i] must be a constant [i32] value unsigned less than 11650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen the size of the vector. 11663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getExtractElement]. *) 1167a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_extractelement : llvalue -> llvalue -> llvalue 1168a156efdf71bc668093e31593713694cf076db895Torok Edwin 11690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_insertelement vec v i] returns the constant vector with the same 11700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements as constant vector [v] but the [i]th element replaced by the 11710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant [v]. [v] must be a constant value with the type of the vector 11720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen elements. [i] must be a constant [i32] value unsigned less than the size 11730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen of the vector. 11743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getInsertElement]. *) 1175a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_insertelement : llvalue -> llvalue -> llvalue -> llvalue 1176a156efdf71bc668093e31593713694cf076db895Torok Edwin 11770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [const_shufflevector a b mask] returns a constant [shufflevector]. 1178d6850b0f37e2bfdb189452562c00faa24dc32574Bob Wilson See the LLVM Language Reference for details on the [shufflevector] 11790465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction. 11803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::ConstantExpr::getShuffleVector]. *) 1181a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_shufflevector : llvalue -> llvalue -> llvalue -> llvalue 1182a156efdf71bc668093e31593713694cf076db895Torok Edwin 11831b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_extractvalue agg idxs] returns the constant [idxs]th value of 11841b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar constant aggregate [agg]. Each [idxs] must be less than the size of the 11851b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar aggregate. See the method [llvm::ConstantExpr::getExtractValue]. *) 1186a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_extractvalue : llvalue -> int array -> llvalue 1187a156efdf71bc668093e31593713694cf076db895Torok Edwin 11881b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar(** [const_insertvalue agg val idxs] inserts the value [val] in the specified 11891b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar indexs [idxs] in the aggegate [agg]. Each [idxs] must be less than the size 11901b42cfd1ca03e48835e8e4c91c5dbb598030257fErick Tryzelaar of the aggregate. See the method [llvm::ConstantExpr::getInsertValue]. *) 1191a156efdf71bc668093e31593713694cf076db895Torok Edwinval const_insertvalue : llvalue -> llvalue -> int array -> llvalue 1192a156efdf71bc668093e31593713694cf076db895Torok Edwin 1193ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar(** [const_inline_asm ty asm con side align] inserts a inline assembly string. 1194ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar See the method [llvm::InlineAsm::get]. *) 1195e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotovval const_inline_asm : lltype -> string -> string -> bool -> bool -> llvalue 1196ce89b4e66f7ec82b2b621c94b072f0b22827a3cdErick Tryzelaar 1197c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [block_address f bb] returns the address of the basic block [bb] in the 1198c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar function [f]. See the method [llvm::BasicBlock::get]. *) 1199a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_address : llvalue -> llbasicblock -> llvalue 1200c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar 12013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables, functions, and aliases (globals)} *) 12030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1204dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [global_parent g] is the enclosing module of the global value [g]. 1205dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::GlobalValue::getParent]. *) 1206a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_parent : llvalue -> llmodule 1207dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 12080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_declaration g] returns [true] if the global value [g] is a declaration 12090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen only. Returns [false] otherwise. 12103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::isDeclaration]. *) 1211a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_declaration : llvalue -> bool 12120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12130465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [linkage g] returns the linkage of the global value [g]. 12143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getLinkage]. *) 1215a156efdf71bc668093e31593713694cf076db895Torok Edwinval linkage : llvalue -> Linkage.t 12160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_linkage l g] sets the linkage of the global value [g] to [l]. 12183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setLinkage]. *) 1219a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_linkage : Linkage.t -> llvalue -> unit 12200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [section g] returns the linker section of the global value [g]. 12223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getSection]. *) 1223a156efdf71bc668093e31593713694cf076db895Torok Edwinval section : llvalue -> string 12240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_section s g] sets the linker section of the global value [g] to [s]. 12263b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::setSection]. *) 1227a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_section : string -> llvalue -> unit 12280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [visibility g] returns the linker visibility of the global value [g]. 12303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getVisibility]. *) 1231a156efdf71bc668093e31593713694cf076db895Torok Edwinval visibility : llvalue -> Visibility.t 12320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_visibility v g] sets the linker visibility of the global value [g] to 12343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [v]. See the method [llvm::GlobalValue::setVisibility]. *) 1235a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_visibility : Visibility.t -> llvalue -> unit 1236a156efdf71bc668093e31593713694cf076db895Torok Edwin 12370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [alignment g] returns the required alignment of the global value [g]. 12383b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalValue::getAlignment]. *) 1239a156efdf71bc668093e31593713694cf076db895Torok Edwinval alignment : llvalue -> int 12400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_alignment n g] sets the required alignment of the global value [g] to 12423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [n] bytes. See the method [llvm::GlobalValue::setAlignment]. *) 1243a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_alignment : int -> llvalue -> unit 12448ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 12453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 12463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on global variables} *) 12470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_global ty name m] returns a new global variable of type [ty] and 12498e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar with name [name] in module [m] in the default address space (0). If such a 12508e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar global variable already exists, it is returned. If the type of the existing 12518e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar global differs, then a bitcast to [ty] is returned. *) 1252a156efdf71bc668093e31593713694cf076db895Torok Edwinval declare_global : lltype -> string -> llmodule -> llvalue 1253a156efdf71bc668093e31593713694cf076db895Torok Edwin 1254df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar(** [declare_qualified_global ty name addrspace m] returns a new global variable 1255df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar of type [ty] and with name [name] in module [m] in the address space 1256df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar [addrspace]. If such a global variable already exists, it is returned. If 1257df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar the type of the existing global differs, then a bitcast to [ty] is 1258df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar returned. *) 1259e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotovval declare_qualified_global : lltype -> string -> int -> llmodule -> llvalue 12608e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar 12610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_global name init m] returns a new global with name [name] and 12628e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar initializer [init] in module [m] in the default address space (0). If the 12638e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar named global already exists, it is renamed. 12643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 1265a156efdf71bc668093e31593713694cf076db895Torok Edwinval define_global : string -> llvalue -> llmodule -> llvalue 1266a156efdf71bc668093e31593713694cf076db895Torok Edwin 1267df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar(** [define_qualified_global name init addrspace m] returns a new global with 1268df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar name [name] and initializer [init] in module [m] in the address space 1269df75eb64a7e34083051315cfed02d1559084d4cfErick Tryzelaar [addrspace]. If the named global already exists, it is renamed. 12708e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar See the constructor of [llvm::GlobalVariable]. *) 1271e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotovval define_qualified_global : string -> llvalue -> int -> llmodule -> llvalue 12728e130b1d0d53346e05d0a1161a52c6d62de163c4Erick Tryzelaar 12730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_global name m] returns [Some g] if a global variable with name 12740465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such global exists, returns [None]. 12753b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the [llvm::GlobalVariable] constructor. *) 1276a156efdf71bc668093e31593713694cf076db895Torok Edwinval lookup_global : string -> llmodule -> llvalue option 1277a156efdf71bc668093e31593713694cf076db895Torok Edwin 12780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_global gv] destroys the global variable [gv]. 12793b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::eraseFromParent]. *) 1280a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_global : llvalue -> unit 12810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 12824733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_begin m] returns the first position in the global variable list of 12834733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [global_begin] and [global_succ] can be used to iterate 12844733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the global list in order. 12854733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_begin]. *) 1286a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_begin : llmodule -> (llmodule, llvalue) llpos 1287a156efdf71bc668093e31593713694cf076db895Torok Edwin 12884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_succ gv] returns the global variable list position succeeding 12894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 12904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator++]. *) 1291a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_succ : llvalue -> (llmodule, llvalue) llpos 1292a156efdf71bc668093e31593713694cf076db895Torok Edwin 12934733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_globals f m] applies function [f] to each of the global variables of 12944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in order. Tail recursive. *) 12954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_globals : (llvalue -> unit) -> llmodule -> unit 12964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 12974733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_globals f init m] is [f (... (f init g1) ...) gN] where 12984733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 12994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_globals : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 13004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_end m] returns the last position in the global variable list of the 13024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [global_end] and [global_pred] can be used to iterate over the 13034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen global list in reverse. 13044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_end]. *) 1305a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_end : llmodule -> (llmodule, llvalue) llrev_pos 1306a156efdf71bc668093e31593713694cf076db895Torok Edwin 13074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [global_pred gv] returns the global variable list position preceding 13084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [After gv]. 13094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::global_iterator::operator--]. *) 1310a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_pred : llvalue -> (llmodule, llvalue) llrev_pos 1311a156efdf71bc668093e31593713694cf076db895Torok Edwin 13124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_globals f m] applies function [f] to each of the global variables 13134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of module [m] in reverse order. Tail recursive. *) 13144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_globals : (llvalue -> unit) -> llmodule -> unit 13154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_globals f m init] is [f g1 (... (f gN init) ...)] where 13174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [g1,...,gN] are the global variables of module [m]. Tail recursive. *) 13184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_globals : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 13194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 13200465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_global_constant gv] returns [true] if the global variabile [gv] is a 13210465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen constant. Returns [false] otherwise. 13223b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isConstant]. *) 1323a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_global_constant : llvalue -> bool 13240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_global_constant c gv] sets the global variable [gv] to be a constant if 13260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not if [c] is [false]. 13273b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setConstant]. *) 1328a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_global_constant : bool -> llvalue -> unit 1329a156efdf71bc668093e31593713694cf076db895Torok Edwin 13300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [global_initializer gv] returns the initializer for the global variable 13313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [gv]. See the method [llvm::GlobalVariable::getInitializer]. *) 1332a156efdf71bc668093e31593713694cf076db895Torok Edwinval global_initializer : llvalue -> llvalue 13330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_initializer c gv] sets the initializer for the global variable 13350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv] to the constant [c]. 13363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 1337a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_initializer : llvalue -> llvalue -> unit 13380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [remove_initializer gv] unsets the initializer for the global variable 13400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [gv]. 13413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setInitializer]. *) 1342a156efdf71bc668093e31593713694cf076db895Torok Edwinval remove_initializer : llvalue -> unit 13430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_thread_local gv] returns [true] if the global variable [gv] is 13450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen thread-local and [false] otherwise. 13463b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::isThreadLocal]. *) 1347a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_thread_local : llvalue -> bool 13480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_thread_local c gv] sets the global variable [gv] to be thread local if 13500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [c] is [true] and not otherwise. 13513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::GlobalVariable::setThreadLocal]. *) 1352a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_thread_local : bool -> llvalue -> unit 13538ef426baa36639458f6777309db25c1768dc9c8aGordon Henriksen 13548a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [is_thread_local gv] returns the thread local mode of the global 13558a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov variable [gv]. 13568a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::GlobalVariable::getThreadLocalMode]. *) 13578a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval thread_local_mode : llvalue -> ThreadLocalMode.t 13588a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 13598a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [set_thread_local c gv] sets the thread local mode of the global 13608a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov variable [gv]. 13618a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::GlobalVariable::setThreadLocalMode]. *) 13628a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval set_thread_local_mode : ThreadLocalMode.t -> llvalue -> unit 13638a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 13648a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [is_externally_initialized gv] returns [true] if the global 13658a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov variable [gv] is externally initialized and [false] otherwise. 13668a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::GlobalVariable::isExternallyInitialized]. *) 13678a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval is_externally_initialized : llvalue -> bool 13688a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 13698a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [set_externally_initialized c gv] sets the global variable [gv] to be 13708a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov externally initialized if [c] is [true] and not otherwise. 13718a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::GlobalVariable::setExternallyInitialized]. *) 13728a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval set_externally_initialized : bool -> llvalue -> unit 13738a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 13743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 13756ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar(** {7 Operations on aliases} *) 13766ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 13776ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar(** [add_alias m t a n] inserts an alias in the module [m] with the type [t] and 13786ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar the aliasee [a] with the name [n]. 13796ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar See the constructor for [llvm::GlobalAlias]. *) 1380a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_alias : llmodule -> lltype -> llvalue -> string -> llvalue 1381a156efdf71bc668093e31593713694cf076db895Torok Edwin 13826ba5c56cf5b1609ec4af45f4901118865a8ed9b6Erick Tryzelaar 13833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on functions} *) 13840465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 13850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [declare_function name ty m] returns a new function of type [ty] and 13860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen with name [name] in module [m]. If such a function already exists, 13870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen it is returned. If the type of the existing function differs, then a bitcast 13883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen to [ty] is returned. *) 1389a156efdf71bc668093e31593713694cf076db895Torok Edwinval declare_function : string -> lltype -> llmodule -> llvalue 1390a156efdf71bc668093e31593713694cf076db895Torok Edwin 13910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [define_function name ty m] creates a new function with name [name] and 13920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen type [ty] in module [m]. If the named function already exists, it is 13930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen renamed. An entry basic block is created in the function. 13943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::GlobalVariable]. *) 1395a156efdf71bc668093e31593713694cf076db895Torok Edwinval define_function : string -> lltype -> llmodule -> llvalue 1396a156efdf71bc668093e31593713694cf076db895Torok Edwin 13970465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [lookup_function name m] returns [Some f] if a function with name 13980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [name] exists in module [m]. If no such function exists, returns [None]. 13993b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Module] constructor. *) 1400a156efdf71bc668093e31593713694cf076db895Torok Edwinval lookup_function : string -> llmodule -> llvalue option 1401a156efdf71bc668093e31593713694cf076db895Torok Edwin 14020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_function f] destroys the function [f]. 14033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::eraseFromParent]. *) 1404a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_function : llvalue -> unit 14050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_begin m] returns the first position in the function list of the 14074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m]. [function_begin] and [function_succ] can be used to iterate over 14084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function list in order. 14094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::begin]. *) 1410a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_begin : llmodule -> (llmodule, llvalue) llpos 1411a156efdf71bc668093e31593713694cf076db895Torok Edwin 14124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_succ gv] returns the function list position succeeding 14134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before gv]. 14144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator++]. *) 1415a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_succ : llvalue -> (llmodule, llvalue) llpos 1416a156efdf71bc668093e31593713694cf076db895Torok Edwin 14174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_functions f m] applies function [f] to each of the functions of module 14184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [m] in order. Tail recursive. *) 14194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_functions : (llvalue -> unit) -> llmodule -> unit 14204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_function f init m] is [f (... (f init f1) ...) fN] where 14224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 14234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_functions : ('a -> llvalue -> 'a) -> 'a -> llmodule -> 'a 14244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_end m] returns the last position in the function list of 14264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the module [m]. [function_end] and [function_pred] can be used to iterate 14274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the function list in reverse. 14284733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::end]. *) 1429a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_end : llmodule -> (llmodule, llvalue) llrev_pos 1430a156efdf71bc668093e31593713694cf076db895Torok Edwin 14314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [function_pred gv] returns the function list position preceding [After gv]. 14324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Module::iterator::operator--]. *) 1433a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_pred : llvalue -> (llmodule, llvalue) llrev_pos 1434a156efdf71bc668093e31593713694cf076db895Torok Edwin 14354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_functions f fn] applies function [f] to each of the functions of 14364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen module [m] in reverse order. Tail recursive. *) 14374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_functions : (llvalue -> unit) -> llmodule -> unit 14384733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14394733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_functions f m init] is [f (... (f init fN) ...) f1] where 14404733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [f1,...,fN] are the functions of module [m]. Tail recursive. *) 14414733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_functions : (llvalue -> 'a -> 'a) -> llmodule -> 'a -> 'a 14424733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 14430465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [is_intrinsic f] returns true if the function [f] is an intrinsic. 14443b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::isIntrinsic]. *) 1445a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_intrinsic : llvalue -> bool 14460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [function_call_conv f] returns the calling convention of the function [f]. 14483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getCallingConv]. *) 1449a156efdf71bc668093e31593713694cf076db895Torok Edwinval function_call_conv : llvalue -> int 14500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 14510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [set_function_call_conv cc f] sets the calling convention of the function 14520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [f] to the calling convention numbered [cc]. 14533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::setCallingConv]. *) 1454a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_function_call_conv : int -> llvalue -> unit 1455a156efdf71bc668093e31593713694cf076db895Torok Edwin 14565eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [gc f] returns [Some name] if the function [f] has a garbage 145780a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen collection algorithm specified and [None] otherwise. 14585eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen See the method [llvm::Function::getGC]. *) 1459a156efdf71bc668093e31593713694cf076db895Torok Edwinval gc : llvalue -> string option 146080a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 14615eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen(** [set_gc gc f] sets the collection algorithm for the function [f] to 14625eca075b74d62c621b160aa216b4cd50829a2cc7Gordon Henriksen [gc]. See the method [llvm::Function::setGC]. *) 1463a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_gc : string option -> llvalue -> unit 146480a75bfae980df96f969f1c05b0c4a80ce975240Gordon Henriksen 1465e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_function_attr f a] adds attribute [a] to the return type of function 1466e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [f]. *) 14670941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_function_attr : llvalue -> Attribute.t -> unit 1468e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 14698a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [add_target_dependent_function_attr f a] adds target-dependent attribute 14708a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov [a] to function [f]. *) 14718a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval add_target_dependent_function_attr : llvalue -> string -> string -> unit 14728a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 14730be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin(** [function_attr f] returns the function attribute for the function [f]. 1474e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::Function::getAttributes] *) 14750be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinval function_attr : llvalue -> Attribute.t list 14760be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 1477e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_function_attr f a] removes attribute [a] from the return type of 1478e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands function [f]. *) 14790941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_function_attr : llvalue -> Attribute.t -> unit 14803b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1481e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 1482dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on params} *) 1483dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1484dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [params f] returns the parameters of function [f]. 1485dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1486a156efdf71bc668093e31593713694cf076db895Torok Edwinval params : llvalue -> llvalue array 1487dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1488dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param f n] returns the [n]th parameter of function [f]. 1489dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Function::getArgumentList]. *) 1490a156efdf71bc668093e31593713694cf076db895Torok Edwinval param : llvalue -> int -> llvalue 1491dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 14920be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin(** [param_attr p] returns the attributes of parameter [p]. 1493e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the methods [llvm::Function::getAttributes] and 1494e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov [llvm::Attributes::getParamAttributes] *) 14950be167bab219cb178f7a6e91186c700ad48aa047Torok Edwinval param_attr : llvalue -> Attribute.t list 14960be167bab219cb178f7a6e91186c700ad48aa047Torok Edwin 1497dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [param_parent p] returns the parent function that owns the parameter. 1498dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Argument::getParent]. *) 1499a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_parent : llvalue -> llvalue 1500dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 15014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_begin f] returns the first position in the parameter list of the 15024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [param_begin] and [param_succ] can be used to iterate over 15034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the parameter list in order. 15044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_begin]. *) 1505a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_begin : llvalue -> (llvalue, llvalue) llpos 15064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_succ bb] returns the parameter list position succeeding 15084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 15094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator++]. *) 1510a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_succ : llvalue -> (llvalue, llvalue) llpos 15114733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15124733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_params f fn] applies function [f] to each of the parameters 15134733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 15144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_params : (llvalue -> unit) -> llvalue -> unit 15154733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15164733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_params f init fn] is [f (... (f init b1) ...) bN] where 15174733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 15184733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_params : ('a -> llvalue -> 'a) -> 'a -> llvalue -> 'a 15194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_end f] returns the last position in the parameter list of 15214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [param_end] and [param_pred] can be used to iterate 15224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the parameter list in reverse. 15234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_end]. *) 1524a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_end : llvalue -> (llvalue, llvalue) llrev_pos 15254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [param_pred gv] returns the function list position preceding [After gv]. 15274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::arg_iterator::operator--]. *) 1528a156efdf71bc668093e31593713694cf076db895Torok Edwinval param_pred : llvalue -> (llvalue, llvalue) llrev_pos 1529a156efdf71bc668093e31593713694cf076db895Torok Edwin 15304733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_params f fn] applies function [f] to each of the parameters 15314733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 15324733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_params : (llvalue -> unit) -> llvalue -> unit 15334733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 15344733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_params f fn init] is [f (... (f init bN) ...) b1] where 15354733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the parameters of function [fn]. Tail recursive. *) 15364733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_params : (llvalue -> 'a -> 'a) -> llvalue -> 'a -> 'a 15374733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 1538e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_param p a] adds attribute [a] to parameter [p]. *) 15390941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_param_attr : llvalue -> Attribute.t -> unit 1540e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1541e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_param_attr p a] removes attribute [a] from parameter [p]. *) 15420941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_param_attr : llvalue -> Attribute.t -> unit 1543e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1544e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [set_param_alignment p a] set the alignment of parameter [p] to [a]. *) 1545a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_param_alignment : llvalue -> int -> unit 1546a156efdf71bc668093e31593713694cf076db895Torok Edwin 1547dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 15483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on basic blocks} *) 15490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [basic_blocks fn] returns the basic blocks of the function [f]. 15513b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getBasicBlockList]. *) 1552a156efdf71bc668093e31593713694cf076db895Torok Edwinval basic_blocks : llvalue -> llbasicblock array 15530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [entry_block fn] returns the entry basic block of the function [f]. 15553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::Function::getEntryBlock]. *) 1556a156efdf71bc668093e31593713694cf076db895Torok Edwinval entry_block : llvalue -> llbasicblock 15570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [delete_block bb] deletes the basic block [bb]. 15593b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::BasicBlock::eraseFromParent]. *) 1560a156efdf71bc668093e31593713694cf076db895Torok Edwinval delete_block : llbasicblock -> unit 15610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 15628a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [remove_block bb] removes the basic block [bb] from its parent function. 15638a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::BasicBlock::removeFromParent]. *) 15648a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval remove_block : llbasicblock -> unit 15658a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 15668a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [move_block_before pos bb] moves the basic block [bb] before [pos]. 15678a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::BasicBlock::moveBefore]. *) 15688a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval move_block_before : llbasicblock -> llbasicblock -> unit 15698a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 15708a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [move_block_after pos bb] moves the basic block [bb] after [pos]. 15718a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::BasicBlock::moveAfter]. *) 15728a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval move_block_after : llbasicblock -> llbasicblock -> unit 15738a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 1574b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [append_block c name f] creates a new basic block named [name] at the end of 1575b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar function [f] in the context [c]. 15763b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1577a156efdf71bc668093e31593713694cf076db895Torok Edwinval append_block : llcontext -> string -> llvalue -> llbasicblock 1578a156efdf71bc668093e31593713694cf076db895Torok Edwin 1579b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar(** [insert_block c name bb] creates a new basic block named [name] before the 1580b02b87882788e57e180c6b903a37ced0db1ce828Erick Tryzelaar basic block [bb] in the context [c]. 15813b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the constructor of [llvm::BasicBlock]. *) 1582a156efdf71bc668093e31593713694cf076db895Torok Edwinval insert_block : llcontext -> string -> llbasicblock -> llbasicblock 1583a156efdf71bc668093e31593713694cf076db895Torok Edwin 1584dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [block_parent bb] returns the parent function that owns the basic block. 1585dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::BasicBlock::getParent]. *) 1586a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_parent : llbasicblock -> llvalue 1587dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 15884733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_begin f] returns the first position in the basic block list of the 15894733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen function [f]. [block_begin] and [block_succ] can be used to iterate over 15904733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the basic block list in order. 15914733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::begin]. *) 1592a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_begin : llvalue -> (llvalue, llbasicblock) llpos 1593a156efdf71bc668093e31593713694cf076db895Torok Edwin 15944733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_succ bb] returns the basic block list position succeeding 15954733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [Before bb]. 15964733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator++]. *) 1597a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_succ : llbasicblock -> (llvalue, llbasicblock) llpos 1598a156efdf71bc668093e31593713694cf076db895Torok Edwin 15994733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [iter_blocks f fn] applies function [f] to each of the basic blocks 16004733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in order. Tail recursive. *) 16014733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 16024733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 16034733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_left_blocks f init fn] is [f (... (f init b1) ...) bN] where 16044733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 16054733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_left_blocks : ('a -> llbasicblock -> 'a) -> 'a -> llvalue -> 'a 16064733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 16074733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [block_end f] returns the last position in the basic block list of 16084733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen the function [f]. [block_end] and [block_pred] can be used to iterate 16094733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen over the basic block list in reverse. 16104733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::end]. *) 1611a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_end : llvalue -> (llvalue, llbasicblock) llrev_pos 1612a156efdf71bc668093e31593713694cf076db895Torok Edwin 16136b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [block_pred bb] returns the basic block list position preceding [After bb]. 16144733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen See the method [llvm::Function::iterator::operator--]. *) 1615a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_pred : llbasicblock -> (llvalue, llbasicblock) llrev_pos 1616a156efdf71bc668093e31593713694cf076db895Torok Edwin 16176b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [block_terminator bb] returns the terminator of the basic block [bb]. *) 1618ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval block_terminator : llbasicblock -> llvalue option 16194733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 16204733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [rev_iter_blocks f fn] applies function [f] to each of the basic blocks 16214733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen of function [fn] in reverse order. Tail recursive. *) 16224733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval rev_iter_blocks : (llbasicblock -> unit) -> llvalue -> unit 16234733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 16244733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen(** [fold_right_blocks f fn init] is [f (... (f init bN) ...) b1] where 16254733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen [b1,...,bN] are the basic blocks of function [fn]. Tail recursive. *) 16264733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksenval fold_right_blocks : (llbasicblock -> 'a -> 'a) -> llvalue -> 'a -> 'a 16274733be38930ae81716bba9ae75a8281bcb180634Gordon Henriksen 16283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [value_of_block bb] losslessly casts [bb] to an [llvalue]. *) 1629a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_of_block : llbasicblock -> llvalue 16300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [value_is_block v] returns [true] if the value [v] is a basic block and 16320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [false] otherwise. 16333b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen Similar to [llvm::isa<BasicBlock>]. *) 1634a156efdf71bc668093e31593713694cf076db895Torok Edwinval value_is_block : llvalue -> bool 16350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 16363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [block_of_value v] losslessly casts [v] to an [llbasicblock]. *) 1637a156efdf71bc668093e31593713694cf076db895Torok Edwinval block_of_value : llvalue -> llbasicblock 163846abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1639cc0928ff22d9f3e8f2930874f6727db8c700ec35Gordon Henriksen 1640dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** {7 Operations on instructions} *) 1641dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 1642dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [instr_parent i] is the enclosing basic block of the instruction [i]. 1643dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::Instruction::getParent]. *) 1644a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_parent : llvalue -> llbasicblock 1645dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 16466b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [delete_instruction i] deletes the instruction [i]. 16476b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov * See the method [llvm::Instruction::eraseFromParent]. *) 16486b8416192aeb6502f027883b8056d389f2c186a9Peter Zotovval delete_instruction : llvalue -> unit 16496b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov 1650033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_begin bb] returns the first position in the instruction list of the 1651033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_begin] and [instr_succ] can be used to iterate over 1652033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in order. 1653033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::begin]. *) 1654a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_begin : llbasicblock -> (llbasicblock, llvalue) llpos 1655a156efdf71bc668093e31593713694cf076db895Torok Edwin 1656033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_succ i] returns the instruction list position succeeding [Before i]. 1657033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator++]. *) 1658a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_succ : llvalue -> (llbasicblock, llvalue) llpos 1659a156efdf71bc668093e31593713694cf076db895Torok Edwin 1660033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [iter_instrs f bb] applies function [f] to each of the instructions of basic 1661033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen block [bb] in order. Tail recursive. *) 1662033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval iter_instrs: (llvalue -> unit) -> llbasicblock -> unit 1663033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1664033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_left_instrs f init bb] is [f (... (f init g1) ...) gN] where 1665033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [g1,...,gN] are the instructions of basic block [bb]. Tail recursive. *) 1666033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_left_instrs: ('a -> llvalue -> 'a) -> 'a -> llbasicblock -> 'a 1667033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1668033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_end bb] returns the last position in the instruction list of the 1669033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen basic block [bb]. [instr_end] and [instr_pred] can be used to iterate over 1670033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen the instruction list in reverse. 1671033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::end]. *) 1672a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_end : llbasicblock -> (llbasicblock, llvalue) llrev_pos 1673a156efdf71bc668093e31593713694cf076db895Torok Edwin 1674033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [instr_pred i] returns the instruction list position preceding [After i]. 1675033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the method [llvm::BasicBlock::iterator::operator--]. *) 1676a156efdf71bc668093e31593713694cf076db895Torok Edwinval instr_pred : llvalue -> (llbasicblock, llvalue) llrev_pos 1677a156efdf71bc668093e31593713694cf076db895Torok Edwin 1678033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [fold_right_instrs f bb init] is [f (... (f init fN) ...) f1] where 1679033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [f1,...,fN] are the instructions of basic block [bb]. Tail recursive. *) 1680033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval fold_right_instrs: (llvalue -> 'a -> 'a) -> llbasicblock -> 'a -> 'a 1681033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 16826b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [inst_opcode i] returns the [Opcode.t] corresponding to instruction [i], 16836b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov or [Opcode.Invalid] if [i] is not an instruction. *) 16846563c879964c3bcf5c77d40da8d4c807adf605aaTorok Edwinval instr_opcode : llvalue -> Opcode.t 1685dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 16866b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** [icmp_predicate i] returns the [Icmp.t] corresponding to an [icmp] 16876b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov instruction [i]. *) 16884917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwinval icmp_predicate : llvalue -> Icmp.t option 16894917ec9ec775d7bc7fbc3362b4c576c32b7617f4Torok Edwin 1690e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 16913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on call sites} *) 16923b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 16933b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** [instruction_call_conv ci] is the calling convention for the call or invoke 16943b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [ci], which may be one of the values from the module 16953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen {!CallConv}. See the method [llvm::CallInst::getCallingConv] and 16963b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen [llvm::InvokeInst::getCallingConv]. *) 1697a156efdf71bc668093e31593713694cf076db895Torok Edwinval instruction_call_conv: llvalue -> int 1698a156efdf71bc668093e31593713694cf076db895Torok Edwin 1699dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [set_instruction_call_conv cc ci] sets the calling convention for the call 1700dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen or invoke instruction [ci] to the integer [cc], which can be one of the 1701dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen values from the module {!CallConv}. 1702dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::CallInst::setCallingConv] 17033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen and [llvm::InvokeInst::setCallingConv]. *) 1704a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_instruction_call_conv: int -> llvalue -> unit 1705a156efdf71bc668093e31593713694cf076db895Torok Edwin 1706e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [add_instruction_param_attr ci i a] adds attribute [a] to the [i]th 1707e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands parameter of the call or invoke instruction [ci]. [i]=0 denotes the return 1708e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands value. *) 17090941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval add_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1710e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1711e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands(** [remove_instruction_param_attr ci i a] removes attribute [a] from the 1712e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands [i]th parameter of the call or invoke instruction [ci]. [i]=0 denotes the 1713e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands return value. *) 17140941534c712d77243d9dda5e8c1d927563b4edffChris Lattnerval remove_instruction_param_attr : llvalue -> int -> Attribute.t -> unit 1715e149e9960ba0726f4b084763f7ef95afa12d9a88Duncan Sands 1716e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 17176b8416192aeb6502f027883b8056d389f2c186a9Peter Zotov(** {7 Operations on call instructions (only)} *) 171807cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 171907cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [is_tail_call ci] is [true] if the call instruction [ci] is flagged as 172007cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen eligible for tail call optimization, [false] otherwise. 172107cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::isTailCall]. *) 1722a156efdf71bc668093e31593713694cf076db895Torok Edwinval is_tail_call : llvalue -> bool 172307cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen 172407cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen(** [set_tail_call tc ci] flags the call instruction [ci] as eligible for tail 172507cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen call optimization if [tc] is [true], clears otherwise. 172607cabf6102800aa701bc4d1bd282fafb63b8a416Gordon Henriksen See the method [llvm::CallInst::setTailCall]. *) 1727a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_tail_call : bool -> llvalue -> unit 17283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1729e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 17308a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** {7 Operations on load/store instructions (only)} *) 17318a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 17328a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [is_volatile i] is [true] if the load or store instruction [i] is marked 17338a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov as volatile. 17348a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the methods [llvm::LoadInst::isVolatile] and 17358a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov [llvm::StoreInst::isVolatile]. *) 17368a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval is_volatile : llvalue -> bool 17378a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 17388a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [set_volatile v i] marks the load or store instruction [i] as volatile 17398a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov if [v] is [true], unmarks otherwise. 17408a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the methods [llvm::LoadInst::setVolatile] and 17418a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov [llvm::StoreInst::setVolatile]. *) 17428a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval set_volatile : bool -> llvalue -> unit 17438a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 17448a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 17453b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Operations on phi nodes} *) 17460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [add_incoming (v, bb) pn] adds the value [v] to the phi node [pn] for use 17483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen with branches from [bb]. See the method [llvm::PHINode::addIncoming]. *) 1749a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_incoming : (llvalue * llbasicblock) -> llvalue -> unit 1750a156efdf71bc668093e31593713694cf076db895Torok Edwin 17510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [incoming pn] returns the list of value-block pairs for phi node [pn]. 17523b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::PHINode::getIncomingValue]. *) 1753a156efdf71bc668093e31593713694cf076db895Torok Edwinval incoming : llvalue -> (llvalue * llbasicblock) list 17542618a6c1122d5d2007787fb56156be44b21ab32aGordon Henriksen 17553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 1756e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov 17573b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Instruction builders} *) 17580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17595371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar(** [builder context] creates an instruction builder with no position in 17605371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar the context [context]. It is invalid to use this builder until its position 17615371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar is set with {!position_before} or {!position_at_end}. See the constructor 17625371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar for [llvm::LLVMBuilder]. *) 1763a156efdf71bc668093e31593713694cf076db895Torok Edwinval builder : llcontext -> llbuilder 1764033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1765033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [builder_at ip] creates an instruction builder positioned at [ip]. 1766033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 17675371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at : llcontext -> (llbasicblock, llvalue) llpos -> llbuilder 1768a09a89983bf51aa70d3067282e4817ec3057eb51Gordon Henriksen 17690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_before ins] creates an instruction builder positioned before the 17703b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the constructor for [llvm::LLVMBuilder]. *) 17715371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_before : llcontext -> llvalue -> llbuilder 17720465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17730465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [builder_at_end bb] creates an instruction builder positioned at the end of 17743b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen the basic block [bb]. See the constructor for [llvm::LLVMBuilder]. *) 17755371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaarval builder_at_end : llcontext -> llbasicblock -> llbuilder 1776033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen 1777033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen(** [position_builder ip bb] moves the instruction builder [bb] to the position 1778033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen [ip]. 1779033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksen See the constructor for [llvm::LLVMBuilder]. *) 1780a156efdf71bc668093e31593713694cf076db895Torok Edwinval position_builder : (llbasicblock, llvalue) llpos -> llbuilder -> unit 1781a156efdf71bc668093e31593713694cf076db895Torok Edwin 17820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_before ins b] moves the instruction builder [b] to before the 17833b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen instruction [isn]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1784033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_before : llvalue -> llbuilder -> unit 17850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 17860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [position_at_end bb b] moves the instruction builder [b] to the end of the 17873b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen basic block [bb]. See the method [llvm::LLVMBuilder::SetInsertPoint]. *) 1788033d778249e59548c495f39166a53fa80f48eb91Gordon Henriksenval position_at_end : llbasicblock -> llbuilder -> unit 178946abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 1790dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen(** [insertion_block b] returns the basic block that the builder [b] is 1791dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen positioned to insert into. Raises [Not_Found] if the instruction builder is 1792dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen uninitialized. 1793dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen See the method [llvm::LLVMBuilder::GetInsertBlock]. *) 1794a156efdf71bc668093e31593713694cf076db895Torok Edwinval insertion_block : llbuilder -> llbasicblock 1795dc1ce7bdc6e32e7a4c4a110caa32834730183c1bGordon Henriksen 17965c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar(** [insert_into_builder i name b] inserts the specified instruction [i] at the 17975c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar position specified by the instruction builder [b]. 17985c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar See the method [llvm::LLVMBuilder::Insert]. *) 1799a156efdf71bc668093e31593713694cf076db895Torok Edwinval insert_into_builder : llvalue -> string -> llbuilder -> unit 1800a156efdf71bc668093e31593713694cf076db895Torok Edwin 18015c1c2082968ff4c36063ed09c4eea772eb808b6aErick Tryzelaar 180246c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** {7 Metadata} *) 180346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar 180446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_current_debug_location b md] sets the current debug location [md] in 180546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar the builder [b]. 180646c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetDebugLocation]. *) 1807a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_current_debug_location : llbuilder -> llvalue -> unit 1808a156efdf71bc668093e31593713694cf076db895Torok Edwin 180946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [clear_current_debug_location b] clears the current debug location in the 181046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar builder [b]. *) 1811a156efdf71bc668093e31593713694cf076db895Torok Edwinval clear_current_debug_location : llbuilder -> unit 1812a156efdf71bc668093e31593713694cf076db895Torok Edwin 181346c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [current_debug_location b] returns the current debug location, or None 181446c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar if none is currently set. 181546c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::GetDebugLocation]. *) 1816a156efdf71bc668093e31593713694cf076db895Torok Edwinval current_debug_location : llbuilder -> llvalue option 1817a156efdf71bc668093e31593713694cf076db895Torok Edwin 181846c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar(** [set_inst_debug_location b i] sets the current debug location of the builder 181946c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar [b] to the instruction [i]. 182046c80e0c5653e11ada7cebcb46f9a8f7df758e41Erick Tryzelaar See the method [llvm::IRBuilder::SetInstDebugLocation]. *) 1821a156efdf71bc668093e31593713694cf076db895Torok Edwinval set_inst_debug_location : llbuilder -> llvalue -> unit 1822a156efdf71bc668093e31593713694cf076db895Torok Edwin 18233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 18243b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Terminators} *) 18250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret_void b] creates a 18270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret void] 18280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18293b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRetVoid]. *) 1830a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ret_void : llbuilder -> llvalue 18310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ret v b] creates a 18330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [ret %v] 18340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateRet]. *) 1836a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ret : llvalue -> llbuilder -> llvalue 18370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1838e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_aggregate_ret vs b] creates a 1839e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [ret {...} { %v1, %v2, ... } ] 1840e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1841e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateAggregateRet]. *) 1842a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_aggregate_ret : llvalue array -> llbuilder -> llvalue 1843a156efdf71bc668093e31593713694cf076db895Torok Edwin 18440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_br bb b] creates a 18451430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %bb] 18460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateBr]. *) 1848a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_br : llbasicblock -> llbuilder -> llvalue 18490465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 18500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_cond_br cond tbb fbb b] creates a 18511430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar [br %cond, %tbb, %fbb] 18520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 18533b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCondBr]. *) 1854a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_cond_br : llvalue -> llbasicblock -> llbasicblock -> llbuilder -> 1855a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 18560465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 185721491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [build_switch case elsebb count b] creates an empty 18580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [switch %case, %elsebb] 185921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen instruction at the position specified by the instruction builder [b] with 186021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen space reserved for [count] cases. 18613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSwitch]. *) 1862a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_switch : llvalue -> llbasicblock -> int -> llbuilder -> llvalue 1863a156efdf71bc668093e31593713694cf076db895Torok Edwin 1864ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_malloc ty name b] creates an [malloc] 1865ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1866ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::CallInst::CreateMalloc]. *) 1867ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_malloc : lltype -> string -> llbuilder -> llvalue 1868ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1869ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_array_malloc ty val name b] creates an [array malloc] 1870ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1871ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::CallInst::CreateArrayMalloc]. *) 1872ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_array_malloc : lltype -> llvalue -> string -> llbuilder -> llvalue 1873ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1874ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [build_free p b] creates a [free] 1875ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin instruction at the position specified by the instruction builder [b]. 1876ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::LLVMBuilder::CreateFree]. *) 1877ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_free : llvalue -> llbuilder -> llvalue 18780465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 187921491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen(** [add_case sw onval bb] causes switch instruction [sw] to branch to [bb] 188021491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen when its input matches the constant [onval]. 188121491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen See the method [llvm::SwitchInst::addCase]. **) 1882a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_case : llvalue -> llvalue -> llbasicblock -> unit 1883a156efdf71bc668093e31593713694cf076db895Torok Edwin 1884ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [switch_default_dest sw] returns the default destination of the [switch] 1885e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov instruction. 1886e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm:;SwitchInst::getDefaultDest]. **) 1887ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval switch_default_dest : llvalue -> llbasicblock 188821491edbf4027df4db559eb1a9aa8fbf3779cfabGordon Henriksen 1889c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [build_indirect_br addr count b] creates a 1890c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar [indirectbr %addr] 1891c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar instruction at the position specified by the instruction builder [b] with 1892c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar space reserved for [count] destinations. 1893c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::LLVMBuilder::CreateIndirectBr]. *) 1894a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_indirect_br : llvalue -> int -> llbuilder -> llvalue 1895a156efdf71bc668093e31593713694cf076db895Torok Edwin 1896c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar(** [add_destination br bb] adds the basic block [bb] as a possible branch 1897c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar location for the indirectbr instruction [br]. 1898c59286bff1cca8c4fa15f390c9002db94117614eErick Tryzelaar See the method [llvm::IndirectBrInst::addDestination]. **) 1899a156efdf71bc668093e31593713694cf076db895Torok Edwinval add_destination : llvalue -> llbasicblock -> unit 1900a156efdf71bc668093e31593713694cf076db895Torok Edwin 19010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_invoke fn args tobb unwindbb name b] creates an 19020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = invoke %fn(args) to %tobb unwind %unwindbb] 19030465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19043b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInvoke]. *) 1905a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_invoke : llvalue -> llvalue array -> llbasicblock -> 190646abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen llbasicblock -> string -> llbuilder -> llvalue 1907a156efdf71bc668093e31593713694cf076db895Torok Edwin 190848488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [build_landingpad ty persfn numclauses name b] creates an 190948488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin [landingpad] 191048488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin instruction at the position specified by the instruction builder [b]. 191148488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin See the method [llvm::LLVMBuilder::CreateLandingPad]. *) 191248488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinval build_landingpad : lltype -> llvalue -> int -> string -> llbuilder -> 191348488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin llvalue 191448488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin 191548488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin(** [set_cleanup lp] sets the cleanup flag in the [landingpad]instruction. 191648488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwin See the method [llvm::LandingPadInst::setCleanup]. *) 191748488a64fadb2f99706029e51ae4c06fcfac5cdbTorok Edwinval set_cleanup : llvalue -> bool -> unit 19180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 1919ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin(** [add_clause lp clause] adds the clause to the [landingpad]instruction. 1920ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin See the method [llvm::LandingPadInst::addClause]. *) 1921ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval add_clause : llvalue -> llvalue -> unit 1922ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 1923e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov(** [build_resume exn b] builds a [resume exn] instruction 1924e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov at the position specified by the instruction builder [b]. 1925e5de63c7de04c81d7d8484e5b64f47941143c739Peter Zotov See the method [llvm::LLVMBuilder::CreateResume] *) 1926ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwinval build_resume : llvalue -> llbuilder -> llvalue 1927ff616cb440d696b2663d55494e0a5aedfab20726Torok Edwin 19280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_unreachable b] creates an 19290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [unreachable] 19300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUnwind]. *) 1932a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_unreachable : llbuilder -> llvalue 193346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 19343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 19353b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Arithmetic} *) 19360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 19370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_add x y name b] creates a 19380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = add %x, %y] 19390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19403b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAdd]. *) 1941a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1942a156efdf71bc668093e31593713694cf076db895Torok Edwin 19431430425539fd8004e47ab664c5e5fe5dc23c6d58Erick Tryzelaar(** [build_nsw_add x y name b] creates a 1944e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = nsw add %x, %y] 1945e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1946e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWAdd]. *) 1947a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1948a156efdf71bc668093e31593713694cf076db895Torok Edwin 194919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_add x y name b] creates a 195019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw add %x, %y] 195119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 195219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWAdd]. *) 1953a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_add : llvalue -> llvalue -> string -> llbuilder -> llvalue 1954a156efdf71bc668093e31593713694cf076db895Torok Edwin 1955e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fadd x y name b] creates a 1956e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fadd %x, %y] 1957e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1958e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFAdd]. *) 1959a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fadd : llvalue -> llvalue -> string -> llbuilder -> llvalue 1960a156efdf71bc668093e31593713694cf076db895Torok Edwin 19610465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sub x y name b] creates a 19620465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub %x, %y] 19630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19643b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSub]. *) 1965a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1966a156efdf71bc668093e31593713694cf076db895Torok Edwin 196719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_sub x y name b] creates a 196819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub %x, %y] 196919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 197019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWSub]. *) 1971a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1972a156efdf71bc668093e31593713694cf076db895Torok Edwin 197319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_sub x y name b] creates a 197419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub %x, %y] 197519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 197619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWSub]. *) 1977a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_sub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1978a156efdf71bc668093e31593713694cf076db895Torok Edwin 1979e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fsub x y name b] creates a 1980e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fsub %x, %y] 1981e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 1982e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFSub]. *) 1983a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fsub : llvalue -> llvalue -> string -> llbuilder -> llvalue 1984a156efdf71bc668093e31593713694cf076db895Torok Edwin 19850465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_mul x y name b] creates a 19860465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = mul %x, %y] 19870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 19883b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateMul]. *) 1989a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1990a156efdf71bc668093e31593713694cf076db895Torok Edwin 199119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_mul x y name b] creates a 199219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw mul %x, %y] 199319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 199419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNSWMul]. *) 1995a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 1996a156efdf71bc668093e31593713694cf076db895Torok Edwin 199719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_mul x y name b] creates a 199819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw mul %x, %y] 199919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 200019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNUWMul]. *) 2001a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_mul : llvalue -> llvalue -> string -> llbuilder -> llvalue 2002a156efdf71bc668093e31593713694cf076db895Torok Edwin 2003e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fmul x y name b] creates a 2004e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = fmul %x, %y] 2005e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2006e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFMul]. *) 2007a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fmul : llvalue -> llvalue -> string -> llbuilder -> llvalue 2008a156efdf71bc668093e31593713694cf076db895Torok Edwin 20090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_udiv x y name b] creates a 20100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = udiv %x, %y] 20110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20123b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUDiv]. *) 2013a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_udiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 2014a156efdf71bc668093e31593713694cf076db895Torok Edwin 20150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sdiv x y name b] creates a 20160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sdiv %x, %y] 20170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20183b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSDiv]. *) 2019a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 2020a156efdf71bc668093e31593713694cf076db895Torok Edwin 2021e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_exact_sdiv x y name b] creates a 2022e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = exact sdiv %x, %y] 2023e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2024e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExactSDiv]. *) 2025a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_exact_sdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 2026a156efdf71bc668093e31593713694cf076db895Torok Edwin 20270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fdiv x y name b] creates a 20280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fdiv %x, %y] 20290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20303b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFDiv]. *) 2031a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fdiv : llvalue -> llvalue -> string -> llbuilder -> llvalue 2032a156efdf71bc668093e31593713694cf076db895Torok Edwin 20330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_urem x y name b] creates a 20340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = urem %x, %y] 20350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20363b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateURem]. *) 2037a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_urem : llvalue -> llvalue -> string -> llbuilder -> llvalue 2038a156efdf71bc668093e31593713694cf076db895Torok Edwin 20390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_SRem x y name b] creates a 20400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = srem %x, %y] 20410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20423b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSRem]. *) 2043a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_srem : llvalue -> llvalue -> string -> llbuilder -> llvalue 2044a156efdf71bc668093e31593713694cf076db895Torok Edwin 20450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_frem x y name b] creates a 20460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = frem %x, %y] 20470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20483b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFRem]. *) 2049a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_frem : llvalue -> llvalue -> string -> llbuilder -> llvalue 2050a156efdf71bc668093e31593713694cf076db895Torok Edwin 20510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shl x y name b] creates a 20520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shl %x, %y] 20530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShl]. *) 2055a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_shl : llvalue -> llvalue -> string -> llbuilder -> llvalue 2056a156efdf71bc668093e31593713694cf076db895Torok Edwin 20570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_lshr x y name b] creates a 20580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = lshr %x, %y] 20590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20603b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLShr]. *) 2061a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_lshr : llvalue -> llvalue -> string -> llbuilder -> llvalue 2062a156efdf71bc668093e31593713694cf076db895Torok Edwin 20630465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ashr x y name b] creates a 20640465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = ashr %x, %y] 20650465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20663b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAShr]. *) 2067a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ashr : llvalue -> llvalue -> string -> llbuilder -> llvalue 2068a156efdf71bc668093e31593713694cf076db895Torok Edwin 20690465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_and x y name b] creates a 20700465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = and %x, %y] 20710465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20723b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAnd]. *) 2073a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_and : llvalue -> llvalue -> string -> llbuilder -> llvalue 2074a156efdf71bc668093e31593713694cf076db895Torok Edwin 20750465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_or x y name b] creates a 20760465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = or %x, %y] 20770465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20783b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateOr]. *) 2079a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_or : llvalue -> llvalue -> string -> llbuilder -> llvalue 2080a156efdf71bc668093e31593713694cf076db895Torok Edwin 20810465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x y name b] creates a 20820465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, %y] 20830465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20843b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 2085a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_xor : llvalue -> llvalue -> string -> llbuilder -> llvalue 2086a156efdf71bc668093e31593713694cf076db895Torok Edwin 20870465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_neg x name b] creates a 20880465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sub 0, %x] 20890465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 20900465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-0.0] is used for floating point types to compute the correct sign. 20913b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateNeg]. *) 2092a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_neg : llvalue -> string -> llbuilder -> llvalue 2093a156efdf71bc668093e31593713694cf076db895Torok Edwin 209419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nsw_neg x name b] creates a 209519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nsw sub 0, %x] 209619f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 209719f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 209819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 2099a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nsw_neg : llvalue -> string -> llbuilder -> llvalue 2100a156efdf71bc668093e31593713694cf076db895Torok Edwin 210119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_nuw_neg x name b] creates a 210219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = nuw sub 0, %x] 210319f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 210419f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 210519f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateNeg]. *) 2106a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_nuw_neg : llvalue -> string -> llbuilder -> llvalue 2107a156efdf71bc668093e31593713694cf076db895Torok Edwin 210819f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar(** [build_fneg x name b] creates a 210919f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [%name = fsub 0, %x] 211019f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar instruction at the position specified by the instruction builder [b]. 211119f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar [-0.0] is used for floating point types to compute the correct sign. 211219f047f5f6c44d1cd5681f9314b3ff5e7bae122dErick Tryzelaar See the method [llvm::LLVMBuilder::CreateFNeg]. *) 2113a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fneg : llvalue -> string -> llbuilder -> llvalue 2114a156efdf71bc668093e31593713694cf076db895Torok Edwin 21150465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_xor x name b] creates a 21160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = xor %x, -1] 21170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [-1] is the correct "all ones" value for the type of [x]. 21193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateXor]. *) 2120a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_not : llvalue -> string -> llbuilder -> llvalue 2121a156efdf71bc668093e31593713694cf076db895Torok Edwin 212246abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 21233b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Memory} *) 21240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_alloca ty name b] creates a 21260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty] 21270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 2129a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_alloca : lltype -> string -> llbuilder -> llvalue 2130a156efdf71bc668093e31593713694cf076db895Torok Edwin 21310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_array_alloca ty n name b] creates a 21320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = alloca %ty, %n] 21330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateAlloca]. *) 2135a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_array_alloca : lltype -> llvalue -> string -> llbuilder -> 2136a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 21370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_load v name b] creates a 21390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = load %v] 21400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateLoad]. *) 2142a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_load : llvalue -> string -> llbuilder -> llvalue 2143a156efdf71bc668093e31593713694cf076db895Torok Edwin 21440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_store v p b] creates a 21450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [store %v, %p] 21460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateStore]. *) 2148a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_store : llvalue -> llvalue -> llbuilder -> llvalue 21498a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov 21508a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov(** [build_atomicrmw op ptr val o st b] creates an [atomicrmw] instruction with 21518a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov operation [op] performed on pointer [ptr] and value [val] with ordering [o] 21528a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov and singlethread flag set to [st] at the position specified by 21538a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov the instruction builder [b]. 21548a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov See the method [llvm::IRBuilder::CreateAtomicRMW]. *) 21558a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotovval build_atomicrmw : AtomicRMWBinOp.t -> llvalue -> llvalue -> 21568a3bdd6a3fa8312809a432579a5685d431ca8410Peter Zotov AtomicOrdering.t -> bool -> string -> llbuilder -> llvalue 2157a156efdf71bc668093e31593713694cf076db895Torok Edwin 2158632146044083683a987260599fca3a717b7e38a4Gordon Henriksen(** [build_gep p indices name b] creates a 2159e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, indices...] 21600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateGetElementPtr]. *) 2162a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_gep : llvalue -> llvalue array -> string -> llbuilder -> llvalue 2163a156efdf71bc668093e31593713694cf076db895Torok Edwin 2164e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_in_bounds_gep p indices name b] creates a 2165e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = gelementptr inbounds %p, indices...] 2166e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2167e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInBoundsGetElementPtr]. *) 2168a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_in_bounds_gep : llvalue -> llvalue array -> string -> llbuilder -> 2169a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2170e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2171e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_struct_gep p idx name b] creates a 2172e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = getelementptr %p, 0, idx] 2173e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2174e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateStructGetElementPtr]. *) 2175a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_struct_gep : llvalue -> int -> string -> llbuilder -> 2176a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2177e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2178e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_string str name b] creates a series of instructions that adds 2179e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar a global string at the position specified by the instruction builder [b]. 2180e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalString]. *) 2181a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_global_string : string -> string -> llbuilder -> llvalue 2182a156efdf71bc668093e31593713694cf076db895Torok Edwin 2183e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_global_stringptr str name b] creates a series of instructions that 2184e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar adds a global string pointer at the position specified by the instruction 21855371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar builder [b]. 2186e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateGlobalStringPtr]. *) 2187a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_global_stringptr : string -> string -> llbuilder -> llvalue 2188a156efdf71bc668093e31593713694cf076db895Torok Edwin 2189e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 21903b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Casts} *) 21910465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 21920465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_trunc v ty name b] creates a 21930465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = trunc %p to %ty] 21940465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 21953b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateTrunc]. *) 2196a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_trunc : llvalue -> lltype -> string -> llbuilder -> llvalue 2197a156efdf71bc668093e31593713694cf076db895Torok Edwin 21980465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_zext v ty name b] creates a 21990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = zext %p to %ty] 22000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateZExt]. *) 2202a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_zext : llvalue -> lltype -> string -> llbuilder -> llvalue 2203a156efdf71bc668093e31593713694cf076db895Torok Edwin 22040465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sext v ty name b] creates a 22050465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sext %p to %ty] 22060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSExt]. *) 2208a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sext : llvalue -> lltype -> string -> llbuilder -> llvalue 2209a156efdf71bc668093e31593713694cf076db895Torok Edwin 22100465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptoui v ty name b] creates a 22110465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptoui %p to %ty] 22120465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22133b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToUI]. *) 2214a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptoui : llvalue -> lltype -> string -> llbuilder -> llvalue 2215a156efdf71bc668093e31593713694cf076db895Torok Edwin 22160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptosi v ty name b] creates a 22170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptosi %p to %ty] 22180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22193b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPToSI]. *) 2220a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptosi : llvalue -> lltype -> string -> llbuilder -> llvalue 2221a156efdf71bc668093e31593713694cf076db895Torok Edwin 22220465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_uitofp v ty name b] creates a 22230465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = uitofp %p to %ty] 22240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22253b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateUIToFP]. *) 2226a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_uitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 2227a156efdf71bc668093e31593713694cf076db895Torok Edwin 22280465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_sitofp v ty name b] creates a 22290465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = sitofp %p to %ty] 22300465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22313b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSIToFP]. *) 2232a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sitofp : llvalue -> lltype -> string -> llbuilder -> llvalue 2233a156efdf71bc668093e31593713694cf076db895Torok Edwin 22340465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fptrunc v ty name b] creates a 22350465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fptrunc %p to %ty] 22360465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22373b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPTrunc]. *) 2238a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fptrunc : llvalue -> lltype -> string -> llbuilder -> llvalue 2239a156efdf71bc668093e31593713694cf076db895Torok Edwin 22400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fpext v ty name b] creates a 22410465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fpext %p to %ty] 22420465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22433b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFPExt]. *) 2244a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fpext : llvalue -> lltype -> string -> llbuilder -> llvalue 2245a156efdf71bc668093e31593713694cf076db895Torok Edwin 22460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_ptrtoint v ty name b] creates a 22470465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = prtotint %p to %ty] 22480465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22493b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePtrToInt]. *) 2250a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ptrtoint : llvalue -> lltype -> string -> llbuilder -> llvalue 2251a156efdf71bc668093e31593713694cf076db895Torok Edwin 22520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_inttoptr v ty name b] creates a 22530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = inttoptr %p to %ty] 22540465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 22553b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateIntToPtr]. *) 2256a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_inttoptr : llvalue -> lltype -> string -> llbuilder -> llvalue 2257a156efdf71bc668093e31593713694cf076db895Torok Edwin 22580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_bitcast v ty name b] creates a 22590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = bitcast %p to %ty] 22600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 2261e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateBitCast]. *) 2262a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_bitcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2263a156efdf71bc668093e31593713694cf076db895Torok Edwin 2264e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_zext_or_bitcast v ty name b] creates a zext or bitcast 2265e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2266e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 2267a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_zext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2268a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2269e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2270e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_sext_or_bitcast v ty name b] creates a sext or bitcast 2271e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2272e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateSExtOrBitCast]. *) 2273a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_sext_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2274a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2275e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2276e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_trunc_or_bitcast v ty name b] creates a trunc or bitcast 2277e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2278e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateZExtOrBitCast]. *) 2279a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_trunc_or_bitcast : llvalue -> lltype -> string -> llbuilder -> 2280a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2281e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2282e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_pointercast v ty name b] creates a bitcast or pointer-to-int 2283e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2284e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePointerCast]. *) 2285a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_pointercast : llvalue -> lltype -> string -> llbuilder -> llvalue 2286a156efdf71bc668093e31593713694cf076db895Torok Edwin 2287e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_intcast v ty name b] creates a zext, bitcast, or trunc 2288e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2289e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIntCast]. *) 2290a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_intcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2291a156efdf71bc668093e31593713694cf076db895Torok Edwin 2292e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_fpcast v ty name b] creates a fpext, bitcast, or fptrunc 2293e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2294e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateFPCast]. *) 2295a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fpcast : llvalue -> lltype -> string -> llbuilder -> llvalue 2296a156efdf71bc668093e31593713694cf076db895Torok Edwin 2297e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 22983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Comparisons} *) 22990465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23000465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_icmp pred x y name b] creates a 23010465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = icmp %pred %x, %y] 23020465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateICmp]. *) 2304a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_icmp : Icmp.t -> llvalue -> llvalue -> string -> 2305a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 23060465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23070465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_fcmp pred x y name b] creates a 23080465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = fcmp %pred %x, %y] 23090465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23103b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateFCmp]. *) 2311a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_fcmp : Fcmp.t -> llvalue -> llvalue -> string -> 2312a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 231346abf91f7378fb7bb118d66fe6d69b5d3af1e9d5Gordon Henriksen 23143b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen 23153b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {7 Miscellaneous instructions} *) 23160465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23170465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_phi incoming name b] creates a 23180465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = phi %incoming] 23190465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 2320a523380c6b5ad1d53dc7b38e9aee6bc9868d18c5Gordon Henriksen [incoming] is a list of [(llvalue, llbasicblock)] tuples. 23213b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreatePHI]. *) 2322a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_phi : (llvalue * llbasicblock) list -> string -> llbuilder -> 2323a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 23240465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23250465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_call fn args name b] creates a 23260465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = call %fn(args...)] 23270465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23283b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateCall]. *) 2329a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_call : llvalue -> llvalue array -> string -> llbuilder -> llvalue 2330a156efdf71bc668093e31593713694cf076db895Torok Edwin 23310465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_select cond thenv elsev name b] creates a 23320465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = select %cond, %thenv, %elsev] 23330465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23343b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateSelect]. *) 2335a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_select : llvalue -> llvalue -> llvalue -> string -> llbuilder -> 2336a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 23370465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23380465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_va_arg valist argty name b] creates a 23390465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = va_arg %valist, %argty] 23400465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23413b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateVAArg]. *) 2342a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_va_arg : llvalue -> lltype -> string -> llbuilder -> llvalue 2343a156efdf71bc668093e31593713694cf076db895Torok Edwin 23440465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_extractelement vec i name b] creates a 23450465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = extractelement %vec, %i] 23460465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23473b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateExtractElement]. *) 2348a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_extractelement : llvalue -> llvalue -> string -> llbuilder -> 2349a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 23500465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23510465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_insertelement vec elt i name b] creates a 23520465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = insertelement %vec, %elt, %i] 23530465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23543b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateInsertElement]. *) 2355a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_insertelement : llvalue -> llvalue -> llvalue -> string -> 2356a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 23570465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen 23580465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen(** [build_shufflevector veca vecb mask name b] creates a 23590465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen [%name = shufflevector %veca, %vecb, %mask] 23600465fb5663a0108399df4c19db1afb4516328964Gordon Henriksen instruction at the position specified by the instruction builder [b]. 23613b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen See the method [llvm::LLVMBuilder::CreateShuffleVector]. *) 2362a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_shufflevector : llvalue -> llvalue -> llvalue -> string -> 2363a156efdf71bc668093e31593713694cf076db895Torok Edwin llbuilder -> llvalue 23641ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 2365cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines(** [build_extractvalue agg idx name b] creates a 2366e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = extractvalue %agg, %idx] 2367e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2368e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateExtractValue]. *) 2369a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_extractvalue : llvalue -> int -> string -> llbuilder -> llvalue 2370a156efdf71bc668093e31593713694cf076db895Torok Edwin 2371e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2372e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_insertvalue agg val idx name b] creates a 2373e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = insertvalue %agg, %val, %idx] 2374e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2375e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateInsertValue]. *) 2376a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_insertvalue : llvalue -> llvalue -> int -> string -> llbuilder -> 2377a156efdf71bc668093e31593713694cf076db895Torok Edwin llvalue 2378e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar 2379e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_null val name b] creates a 2380e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp eq %val, null] 2381e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2382e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNull]. *) 2383a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_is_null : llvalue -> string -> llbuilder -> llvalue 2384a156efdf71bc668093e31593713694cf076db895Torok Edwin 2385e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_is_not_null val name b] creates a 2386e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar [%name = icmp ne %val, null] 2387e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar instruction at the position specified by the instruction builder [b]. 2388e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreateIsNotNull]. *) 2389a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_is_not_null : llvalue -> string -> llbuilder -> llvalue 2390a156efdf71bc668093e31593713694cf076db895Torok Edwin 2391e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar(** [build_ptrdiff lhs rhs name b] creates a series of instructions that measure 2392e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar the difference between two pointer values at the position specified by the 23935371aa2a1c9a4eeecffdb9ab7b2175732e49475bErick Tryzelaar instruction builder [b]. 2394e0f8bf6cbe1bee904021a8ae45008e3703dde283Erick Tryzelaar See the method [llvm::LLVMBuilder::CreatePtrDiff]. *) 2395a156efdf71bc668093e31593713694cf076db895Torok Edwinval build_ptrdiff : llvalue -> llvalue -> string -> llbuilder -> llvalue 2396a156efdf71bc668093e31593713694cf076db895Torok Edwin 23971ae6135fa37eb061499d079b9b33dc82dcc1283fGordon Henriksen 23983b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen(** {6 Memory buffers} *) 2399da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2400da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenmodule MemoryBuffer : sig 24013b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** [of_file p] is the memory buffer containing the contents of the file at 24023b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen path [p]. If the file could not be read, then [IoError msg] is 24033b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen raised. *) 2404a156efdf71bc668093e31593713694cf076db895Torok Edwin val of_file : string -> llmemorybuffer 2405da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 2406e239d20d36c2cdf4e4143c38d470300c11441a16Sylvestre Ledru (** [of_stdin ()] is the memory buffer containing the contents of standard input. 24073b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen If standard input is empty, then [IoError msg] is raised. *) 2408a156efdf71bc668093e31593713694cf076db895Torok Edwin val of_stdin : unit -> llmemorybuffer 2409f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov 2410f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov (** [of_string ~name s] is the memory buffer containing the contents of string [s]. 2411f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov The name of memory buffer is set to [name] if it is provided. *) 2412f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov val of_string : ?name:string -> string -> llmemorybuffer 2413f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov 2414f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov (** [as_string mb] is the string containing the contents of memory buffer [mb]. *) 2415f00a9e0f79541538df7e3af2e83de37f40d904ccPeter Zotov val as_string : llmemorybuffer -> string 2416da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 24173b646de03668fed630f4e3fa9df56a7332a905e4Gordon Henriksen (** Disposes of a memory buffer. *) 2418a156efdf71bc668093e31593713694cf076db895Torok Edwin val dispose : llmemorybuffer -> unit 2419da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksenend 2420d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2421d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2422d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen(** {6 Pass Managers} *) 2423d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2424d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenmodule PassManager : sig 2425d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** *) 2426d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type 'a t 2427d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type any = [ `Module | `Function ] 2428d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2429d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [PassManager.create ()] constructs a new whole-module pass pipeline. This 2430d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen type of pipeline is suitable for link-time optimization and whole-module 2431d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen transformations. 2432d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::PassManager]. *) 2433a156efdf71bc668093e31593713694cf076db895Torok Edwin val create : unit -> [ `Module ] t 2434d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 243516609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar (** [PassManager.create_function m] constructs a new function-by-function 243616609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar pass pipeline over the module [m]. It does not take ownership of [m]. 243716609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar This type of pipeline is suitable for code generation and JIT compilation 243816609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar tasks. 2439d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the constructor of [llvm::FunctionPassManager]. *) 2440a156efdf71bc668093e31593713694cf076db895Torok Edwin val create_function : llmodule -> [ `Function ] t 2441a156efdf71bc668093e31593713694cf076db895Torok Edwin 2442d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_module m pm] initializes, executes on the module [m], and finalizes 2443d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen all of the passes scheduled in the pass manager [pm]. Returns [true] if 2444d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen any of the passes modified the module, [false] otherwise. 2445d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::PassManager::run] method. *) 2446a156efdf71bc668093e31593713694cf076db895Torok Edwin val run_module : llmodule -> [ `Module ] t -> bool 2447a156efdf71bc668093e31593713694cf076db895Torok Edwin 2448d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [initialize fpm] initializes all of the function passes scheduled in the 2449d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes modified 2450d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen the module, [false] otherwise. 2451d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doInitialization] method. *) 2452a156efdf71bc668093e31593713694cf076db895Torok Edwin val initialize : [ `Function ] t -> bool 2453d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2454d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [run_function f fpm] executes all of the function passes scheduled in the 2455d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm] over the function [f]. Returns [true] if any 2456d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen of the passes modified [f], [false] otherwise. 2457d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::run] method. *) 2458a156efdf71bc668093e31593713694cf076db895Torok Edwin val run_function : llvalue -> [ `Function ] t -> bool 2459d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2460d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** [finalize fpm] finalizes all of the function passes scheduled in in the 2461d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen function pass manager [fpm]. Returns [true] if any of the passes 2462d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen modified the module, [false] otherwise. 2463d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the [llvm::FunctionPassManager::doFinalization] method. *) 2464a156efdf71bc668093e31593713694cf076db895Torok Edwin val finalize : [ `Function ] t -> bool 2465d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen 2466d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen (** Frees the memory of a pass pipeline. For function pipelines, does not free 246716609f3c5c26ba34603ae0d7ebab86fb11a72722Erick Tryzelaar the module. 2468d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksen See the destructor of [llvm::BasePassManager]. *) 2469a156efdf71bc668093e31593713694cf076db895Torok Edwin val dispose : [< any ] t -> unit 2470d78c0f5a7255e4347cbd82f7435c51401096652cGordon Henriksenend 2471