NAME
LLVM::Builder - LLVM builder class
VERSION
version 0.10
DESCRIPTION
A LLVM::Builder is the means of building instructions and represents a point within a basic block.
METHODS
new( )
Create a new LLVM::Builder object.
position_at_end( $blk )
Postion the LLVM::Builder at the end of the given LLVM::BasicBlock.
TERMINATOR INSTRUCTIONS
See the LLVM reference for more information about the single instructions.
ret( $v )
Append a ret instruction to the block. This function takes a LLVM::Value representing the value to be returned and returns a LLVM::Value.
ret_void( )
Append a void ret instruction to the block. This function returns a LLVM::Value.
br( $dest )
Append a branch instruction to the block. This function takes a LLVM::BasicBlock $dest.
cond( $if, $then, $else )
Append a conditional instruction to the block. This function takes a LLVM::Value $if representing the condition (e.g. it can be the value returned by a icmp or fcmp instruction) and two LLVM::BasicBlock: the first executed if the condition is true, the second executed otherwise.
unreachable( )
Append an unreachable instruction to the block.
BINARY OPERATIONS
The binary operations require two arguments of the same LLVM::Type and produce a single LLVM::Value.
See the LLVM reference for more information about the single instructions.
add( $lhs, $rhs, $name )
Append an integer add instruction to the block and name the result $name.
fadd( $lhs, $rhs, $name )
Append a floating add instruction to the block and name the result $name.
mul( $lhs, $rhs, $name )
Append a mul instruction to the block and name the result $name.
fmul( $lhs, $rhs, $name )
Append a floating mul instruction to the block and name the result $name.
sub( $lhs, $rhs, $name )
Append a sub instruction to the block and name the result $name.
fsub( $lhs, $rhs, $name )
Append a floating sub instruction to the block and name the result $name.
udiv( $lhs, $rhs, $name )
Append an unsigned div instruction to the block and name the result $name.
sdiv( $lhs, $rhs, $name )
Append a signed div instruction to the block and name the result $name.
fdiv( $lhs, $rhs, $name )
Append a floating div instruction to the block and name the result $name.
BINARY BITWISE OPERATIONS
The binary bitwise operations require two arguments of the same LLVM::Type and produce a single LLVM::Value.
See the LLVM reference for more information about the single instructions.
shl( $lhs, $rhs, $name )
Append a shift left instruction to the block and name the result $name.
lshr( $lhs, $rhs, $name )
Append a logical shift right instruction to the block and name the result $name.
ashr( $lhs, $rhs, $name )
Append an arithmetic shift right instruction to the block and name the result $name.
and( $lhs, $rhs, $name )
Append an and instruction to the block and name the result $name.
or( $lhs, $rhs, $name )
Append an or instruction to the block and name the result $name.
xor( $lhs, $rhs, $name )
Append a xor instruction to the block and name the result $name.
CONVERSION OPERATIONS
See the LLVM reference for more information about the single instructions.
trunc( $ty, $value, $out, $name )
Append a trunc instruction which takes a LLVM::Value and the conversion output LLVM::Type, and name the result $name.
OTHER OPERATIONS
See the LLVM reference for more information about the single instructions.
icmp( $pred, $lhs, $rhs, $name )
Append an integer cmp instruction to the block and name the result $name. The predicate $pred must be one of:
"eq"- 
equal
 "ne"- 
not equal
 "ugt"- 
unsigned greater than
 "uge"- 
unsigned greater or equal
 "ult"- 
unsigned less than
 "ule"- 
unsigned less or equal
 "sgt"- 
signed greater than
 "sge"- 
signed greater or equal
 "slt"- 
signed less than
 "sle"- 
signed less or equal
 
fcmp( $pred, $lhs, $rhs, $name )
Append a float cmp instruction to the block and name the result $name. The predicate $pred must be one of:
"false"- 
no comparison, always returns false
 "oeq"- 
ordered and equal
 "ogt"- 
ordered and greater than
 "oge"- 
ordered and greater than or equal
 "olt"- 
ordered and less than
 "ole"- 
ordered and less than or equal
 "one"- 
ordered and not equal
 "ord"- 
ordered (no nans)
 "ueq"- 
unordered or equal
 "ugt"- 
unordered or greater than
 "uge"- 
unordered or greater than or equal
 "ult"- 
unordered or less than
 "ule"- 
unordered or less than or equal
 "une"- 
unordered or not equal
 "uno"- 
unordered (either nans)
 "true"- 
no comparison, always returns true
 
call( $func, $name [, $arg ... ] )
Append a call instruction to the block and name the result $name. The generated instruction will call the LLVM::Value representing a function $func with the given arguments of type LLVM::Value.
select( $if, $then, $else, $name )
Append a select instruction to the block and name the result $name. $if, $then and $else are LLVM::Values.
AUTHOR
Alessandro Ghedini <alexbio@cpan.org>
LICENSE AND COPYRIGHT
Copyright 2012 Alessandro Ghedini.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.