4 Builder
The builder is used to construct LLVM IR instructions. Create a builder, position it at the end of a basic block, then use the llvm-build-* functions to emit instructions.
4.1 Builder Setup
procedure
procedure
(llvm-append-basic-block function) → LLVMBasicBlockRef?
function : LLVMValueRef?
procedure
(llvm-builder-position-at-end builder basic-block) → void? builder : LLVMBuilderRef? basic-block : LLVMBasicBlockRef?
procedure
(llvm-get-param function index) → LLVMValueRef?
function : LLVMValueRef? index : integer?
procedure
(llvm-get-insert-block builder) → LLVMBasicBlockRef?
builder : LLVMBuilderRef?
4.2 Return Instructions
procedure
(llvm-build-ret builder value) → LLVMValueRef?
builder : LLVMBuilderRef? value : LLVMValueRef?
procedure
(llvm-build-ret-void builder) → LLVMValueRef?
builder : LLVMBuilderRef?
4.3 Arithmetic Instructions
All arithmetic instructions take a builder, operands, and a name string for the result register.
procedure
(llvm-build-add builder lhs rhs [name]) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string? = ""
procedure
(llvm-build-sub builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-mul builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-s-div builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-u-div builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-s-rem builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-u-rem builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-neg builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
procedure
(llvm-build-f-add builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-f-sub builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-f-mul builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-f-div builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-f-rem builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-f-neg builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
4.4 Bitwise Instructions
procedure
(llvm-build-and builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-or builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-xor builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-not builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
procedure
(llvm-build-shl builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-l-shr builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
procedure
(llvm-build-a-shr builder lhs rhs name) → LLVMValueRef?
builder : LLVMBuilderRef? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string?
4.5 Comparison Instructions
procedure
(llvm-build-i-cmp builder predicate lhs rhs [ name]) → LLVMValueRef? builder : LLVMBuilderRef? predicate : symbol? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string? = ""
procedure
(llvm-build-f-cmp builder predicate lhs rhs [ name]) → LLVMValueRef? builder : LLVMBuilderRef? predicate : symbol? lhs : LLVMValueRef? rhs : LLVMValueRef? name : string? = ""
procedure
(llvm-build-is-null builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
procedure
(llvm-build-is-not-null builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
4.6 Control Flow
procedure
(llvm-build-br builder dest) → LLVMValueRef?
builder : LLVMBuilderRef? dest : LLVMBasicBlockRef?
procedure
(llvm-build-cond-br builder cond then-block else-block) → LLVMValueRef? builder : LLVMBuilderRef? cond : LLVMValueRef? then-block : LLVMBasicBlockRef? else-block : LLVMBasicBlockRef?
procedure
(llvm-build-switch builder val default-block num-cases) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? default-block : LLVMBasicBlockRef? num-cases : exact-nonnegative-integer?
procedure
(llvm-add-case switch on-val dest) → void?
switch : LLVMValueRef? on-val : LLVMValueRef? dest : LLVMBasicBlockRef?
procedure
(llvm-build-unreachable builder) → LLVMValueRef?
builder : LLVMBuilderRef?
procedure
(llvm-build-select builder cond then-val else-val name) → LLVMValueRef? builder : LLVMBuilderRef? cond : LLVMValueRef? then-val : LLVMValueRef? else-val : LLVMValueRef? name : string?
4.7 Memory Instructions
procedure
(llvm-build-alloca builder type name) → LLVMValueRef?
builder : LLVMBuilderRef? type : LLVMTypeRef? name : string?
procedure
(llvm-build-malloc builder type name) → LLVMValueRef?
builder : LLVMBuilderRef? type : LLVMTypeRef? name : string?
procedure
(llvm-build-load2 builder type ptr name) → LLVMValueRef?
builder : LLVMBuilderRef? type : LLVMTypeRef? ptr : LLVMValueRef? name : string?
procedure
(llvm-build-store builder val ptr) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? ptr : LLVMValueRef?
procedure
(llvm-build-ge2 builder type ptr indices num-indices name) → LLVMValueRef? builder : LLVMBuilderRef? type : LLVMTypeRef? ptr : LLVMValueRef? indices : cpointer? num-indices : exact-nonnegative-integer? name : string?
procedure
(llvm-build-struct-ge2 builder type ptr index name) → LLVMValueRef? builder : LLVMBuilderRef? type : LLVMTypeRef? ptr : LLVMValueRef? index : exact-nonnegative-integer? name : string?
procedure
(llvm-build-free builder ptr) → LLVMValueRef?
builder : LLVMBuilderRef? ptr : LLVMValueRef?
4.8 Function Calls
procedure
(llvm-build-call2 builder fn-type fn args [ name]) → LLVMValueRef? builder : LLVMBuilderRef? fn-type : LLVMTypeRef? fn : LLVMValueRef? args : (listof LLVMValueRef?) name : string? = ""
4.9 Type Cast Instructions
procedure
(llvm-build-trunc builder val dest-type name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-z-ext builder val dest-type name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-s-ext builder val dest-type name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-fp-to-si builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-fp-to-ui builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-si-to-fp builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-ui-to-fp builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-fp-trunc builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-fp-ext builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-bit-cast builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-ptr-to-int builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
procedure
(llvm-build-int-to-ptr builder val dest-type name) → LLVMValueRef? builder : LLVMBuilderRef? val : LLVMValueRef? dest-type : LLVMTypeRef? name : string?
4.10 PHI Nodes
procedure
(llvm-build-phi builder type name) → LLVMValueRef?
builder : LLVMBuilderRef? type : LLVMTypeRef? name : string?
procedure
(llvm-add-incoming phi values blocks count) → void?
phi : LLVMValueRef? values : cpointer? blocks : cpointer? count : exact-nonnegative-integer?
4.11 Other Instructions
procedure
(llvm-build-freeze builder val name) → LLVMValueRef?
builder : LLVMBuilderRef? val : LLVMValueRef? name : string?
procedure
(llvm-build-global-string builder str name) → LLVMValueRef?
builder : LLVMBuilderRef? str : string? name : string?
procedure
(llvm-build-global-string-ptr builder str name) → LLVMValueRef? builder : LLVMBuilderRef? str : string? name : string?