diff --git a/lib/VMCore/iOperators.cpp b/lib/VMCore/iOperators.cpp index bc37df5cb7f..f520ff52f5b 100644 --- a/lib/VMCore/iOperators.cpp +++ b/lib/VMCore/iOperators.cpp @@ -6,6 +6,7 @@ #include "llvm/iOperators.h" #include "llvm/Type.h" +#include "llvm/Constants.h" using std::cerr; //===----------------------------------------------------------------------===// @@ -40,6 +41,18 @@ BinaryOperator *BinaryOperator::create(BinaryOps Op, Value *S1, Value *S2, } } +BinaryOperator *BinaryOperator::createNeg(Value *Op, const std::string &Name) { + return new GenericBinaryInst(Instruction::Sub, + Constant::getNullValue(Op->getType()), Op, Name); +} + +BinaryOperator *BinaryOperator::createNot(Value *Op, const std::string &Name) { + return new GenericBinaryInst(Instruction::Xor, Op, + ConstantIntegral::getAllOnesValue(Op->getType()), + Name); +} + + // swapOperands - Exchange the two operands to this instruction. This // instruction is safe to use on any binary instruction and does not // modify the semantics of the instruction. If the instruction is