Added vicmp, vfmp. Updated docs. Support FreeBSD.
git-svn-id: http://llvm-py.googlecode.com/svn/trunk@51 8d1e9007-1d4e-0410-b67e-1979fd6579aa
This commit is contained in:
parent
95cef74480
commit
3bbc5685a8
11 changed files with 747 additions and 729 deletions
|
|
@ -384,10 +384,8 @@ _wrap_objobj2obj(LLVMConstXor, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
|||
|
||||
_wrap_intobjobj2obj(LLVMConstICmp, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
_wrap_intobjobj2obj(LLVMConstFCmp, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
/* after LLVM 2.3!
|
||||
_wrap_intobjobj2obj(LLVMConstVICmp, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
_wrap_intobjobj2obj(LLVMConstVFCmp, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
*/
|
||||
|
||||
_wrap_objobj2obj(LLVMConstShl, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
_wrap_objobj2obj(LLVMConstLShr, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
|
|
@ -634,10 +632,8 @@ _wrap_objobjobjstr2obj(LLVMBuildBitCast, LLVMBuilderRef, LLVMValueRef, LLVMTypeR
|
|||
|
||||
_wrap_objintobjobjstr2obj(LLVMBuildICmp, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
_wrap_objintobjobjstr2obj(LLVMBuildFCmp, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
/* after LLVM 2.3!
|
||||
_wrap_objintobjobjstr2obj(LLVMBuildVICmp, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
_wrap_objintobjobjstr2obj(LLVMBuildVFCmp, LLVMBuilderRef, LLVMValueRef, LLVMValueRef, LLVMValueRef)
|
||||
*/
|
||||
|
||||
/* Miscellaneous instructions */
|
||||
|
||||
|
|
@ -1113,10 +1109,8 @@ static PyMethodDef core_methods[] = {
|
|||
_method( LLVMConstXor )
|
||||
_method( LLVMConstICmp )
|
||||
_method( LLVMConstFCmp )
|
||||
/* after LLVM 2.3!
|
||||
_method( LLVMConstVICmp )
|
||||
_method( LLVMConstVFCmp )
|
||||
*/
|
||||
_method( LLVMConstShl )
|
||||
_method( LLVMConstLShr )
|
||||
_method( LLVMConstAShr )
|
||||
|
|
@ -1296,10 +1290,8 @@ static PyMethodDef core_methods[] = {
|
|||
/* Comparisons */
|
||||
_method( LLVMBuildICmp )
|
||||
_method( LLVMBuildFCmp )
|
||||
/* after LLVM 2.3!
|
||||
_method( LLVMBuildVICmp )
|
||||
_method( LLVMBuildVFCmp )
|
||||
*/
|
||||
|
||||
/* Miscellaneous instructions */
|
||||
_method( LLVMBuildGetResult )
|
||||
|
|
|
|||
34
llvm/core.py
34
llvm/core.py
|
|
@ -1481,14 +1481,13 @@ class Constant(Value):
|
|||
check_is_constant(rhs)
|
||||
return Constant(_core.LLVMConstFCmp(real_pred, self.ptr, rhs.ptr))
|
||||
|
||||
# after LLVM 2.3!
|
||||
# def vicmp(self, int_pred, rhs):
|
||||
# check_is_constant(rhs)
|
||||
# return Constant(_core.LLVMConstVICmp(int_pred, self.ptr, rhs.ptr))
|
||||
#
|
||||
# def vfcmp(self, real_pred, rhs):
|
||||
# check_is_constant(rhs)
|
||||
# return Constant(_core.LLVMConstVFCmp(real_pred, self.ptr, rhs.ptr))
|
||||
def vicmp(self, int_pred, rhs):
|
||||
check_is_constant(rhs)
|
||||
return Constant(_core.LLVMConstVICmp(int_pred, self.ptr, rhs.ptr))
|
||||
|
||||
def vfcmp(self, real_pred, rhs):
|
||||
check_is_constant(rhs)
|
||||
return Constant(_core.LLVMConstVFCmp(real_pred, self.ptr, rhs.ptr))
|
||||
|
||||
def shl(self, rhs):
|
||||
check_is_constant(rhs)
|
||||
|
|
@ -2168,16 +2167,15 @@ class Builder(object):
|
|||
check_is_value(rhs)
|
||||
return Value(_core.LLVMBuildFCmp(self.ptr, rpred, lhs.ptr, rhs.ptr, name))
|
||||
|
||||
# after LLVM 2.3!
|
||||
# def vicmp(self, ipred, lhs, rhs, name=""):
|
||||
# check_is_value(lhs)
|
||||
# check_is_value(rhs)
|
||||
# return Value(_core.LLVMBuildVICmp(self.ptr, ipred, lhs.ptr, rhs.ptr, name))
|
||||
#
|
||||
# def vfcmp(self, rpred, lhs, rhs, name=""):
|
||||
# check_is_value(lhs)
|
||||
# check_is_value(rhs)
|
||||
# return Value(_core.LLVMBuildVFCmp(self.ptr, rpred, lhs.ptr, rhs.ptr, name))
|
||||
def vicmp(self, ipred, lhs, rhs, name=""):
|
||||
check_is_value(lhs)
|
||||
check_is_value(rhs)
|
||||
return Value(_core.LLVMBuildVICmp(self.ptr, ipred, lhs.ptr, rhs.ptr, name))
|
||||
|
||||
def vfcmp(self, rpred, lhs, rhs, name=""):
|
||||
check_is_value(lhs)
|
||||
check_is_value(rhs)
|
||||
return Value(_core.LLVMBuildVFCmp(self.ptr, rpred, lhs.ptr, rhs.ptr, name))
|
||||
|
||||
# misc
|
||||
|
||||
|
|
|
|||
|
|
@ -99,6 +99,66 @@ char *LLVMDumpValueToString(LLVMValueRef value)
|
|||
return do_print<LLVMValueRef, llvm::Value>(value);
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMConstVICmp(LLVMIntPredicate predicate, LLVMValueRef lhs,
|
||||
LLVMValueRef rhs)
|
||||
{
|
||||
llvm::Constant *lhsp = llvm::unwrap<llvm::Constant>(lhs);
|
||||
assert(lhsp);
|
||||
llvm::Constant *rhsp = llvm::unwrap<llvm::Constant>(rhs);
|
||||
assert(rhsp);
|
||||
|
||||
llvm::Constant *vicmp =
|
||||
llvm::ConstantExpr::getVICmp(predicate, lhsp, rhsp);
|
||||
return llvm::wrap(vicmp);
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMConstVFCmp(LLVMRealPredicate predicate, LLVMValueRef lhs,
|
||||
LLVMValueRef rhs)
|
||||
{
|
||||
llvm::Constant *lhsp = llvm::unwrap<llvm::Constant>(lhs);
|
||||
assert(lhsp);
|
||||
llvm::Constant *rhsp = llvm::unwrap<llvm::Constant>(rhs);
|
||||
assert(rhsp);
|
||||
|
||||
llvm::Constant *vfcmp =
|
||||
llvm::ConstantExpr::getVFCmp(predicate, lhsp, rhsp);
|
||||
return llvm::wrap(vfcmp);
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMBuildVICmp(LLVMBuilderRef builder, LLVMIntPredicate predicate,
|
||||
LLVMValueRef lhs, LLVMValueRef rhs, const char *name)
|
||||
{
|
||||
llvm::IRBuilder<> *builderp = llvm::unwrap(builder);
|
||||
assert(builderp);
|
||||
|
||||
llvm::Value *lhsp = llvm::unwrap(lhs);
|
||||
assert(lhsp);
|
||||
llvm::Value *rhsp = llvm::unwrap(rhs);
|
||||
assert(rhsp);
|
||||
|
||||
llvm::Value *inst = builderp->CreateVICmp(
|
||||
static_cast<llvm::CmpInst::Predicate>(predicate),
|
||||
lhsp, rhsp, name);
|
||||
return llvm::wrap(inst);
|
||||
}
|
||||
|
||||
LLVMValueRef LLVMBuildVFCmp(LLVMBuilderRef builder, LLVMRealPredicate predicate,
|
||||
LLVMValueRef lhs, LLVMValueRef rhs, const char *name)
|
||||
{
|
||||
llvm::IRBuilder<> *builderp = llvm::unwrap(builder);
|
||||
assert(builderp);
|
||||
|
||||
llvm::Value *lhsp = llvm::unwrap(lhs);
|
||||
assert(lhsp);
|
||||
llvm::Value *rhsp = llvm::unwrap(rhs);
|
||||
assert(rhsp);
|
||||
|
||||
llvm::Value *inst = builderp->CreateVFCmp(
|
||||
static_cast<llvm::CmpInst::Predicate>(predicate),
|
||||
lhsp, rhsp, name);
|
||||
return llvm::wrap(inst);
|
||||
}
|
||||
|
||||
unsigned LLVMModuleGetPointerSize(LLVMModuleRef module)
|
||||
{
|
||||
llvm::Module *modulep = llvm::unwrap(module);
|
||||
|
|
|
|||
16
llvm/extra.h
16
llvm/extra.h
|
|
@ -66,6 +66,22 @@ LLVMValueRef LLVMBuildRetMultiple(LLVMBuilderRef bulder, LLVMValueRef *values,
|
|||
LLVMValueRef LLVMBuildGetResult(LLVMBuilderRef builder, LLVMValueRef value,
|
||||
unsigned index, const char *name);
|
||||
|
||||
/* Wraps llvm::ConstantExpr::getVICmp(). */
|
||||
LLVMValueRef LLVMConstVICmp(LLVMIntPredicate predicate, LLVMValueRef lhs,
|
||||
LLVMValueRef rhs);
|
||||
|
||||
/* Wraps llvm::ConstantExpr::getVFCmp(). */
|
||||
LLVMValueRef LLVMConstVFCmp(LLVMRealPredicate predicate, LLVMValueRef lhs,
|
||||
LLVMValueRef rhs);
|
||||
|
||||
/* Wraps llvm::IRBuilder::CreateVICmp(). */
|
||||
LLVMValueRef LLVMBuildVICmp(LLVMBuilderRef builder, LLVMIntPredicate predicate,
|
||||
LLVMValueRef lhs, LLVMValueRef rhs, const char *name);
|
||||
|
||||
/* Wraps llvm::IRBuilder::CreateVFCmp(). */
|
||||
LLVMValueRef LLVMBuildVFCmp(LLVMBuilderRef builder, LLVMRealPredicate predicate,
|
||||
LLVMValueRef lhs, LLVMValueRef rhs, const char *name);
|
||||
|
||||
/* Wraps llvm::Intrinsic::getDeclaration(). */
|
||||
LLVMValueRef LLVMGetIntrinsic(LLVMModuleRef builder, int id,
|
||||
LLVMTypeRef *types, unsigned n_types);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue