LLVM API Documentation
#include <InstrTypes.h>
Inheritance diagram for llvm::BinaryOperator:
Definition at line 116 of file InstrTypes.h.
llvm::BinaryOperator::BinaryOperator | ( | BinaryOps | iType, | |
Value * | S1, | |||
Value * | S2, | |||
const Type * | Ty, | |||
const std::string & | Name, | |||
Instruction * | InsertBefore | |||
) | [inline, protected] |
Definition at line 120 of file InstrTypes.h.
References init(), and llvm::Use::init().
Referenced by create(), createNeg(), and createNot().
llvm::BinaryOperator::BinaryOperator | ( | BinaryOps | iType, | |
Value * | S1, | |||
Value * | S2, | |||
const Type * | Ty, | |||
const std::string & | Name, | |||
BasicBlock * | InsertAtEnd | |||
) | [inline, protected] |
static bool llvm::BinaryOperator::classof | ( | const Value * | V | ) | [inline, static] |
Reimplemented from llvm::Instruction.
Reimplemented in llvm::SetCondInst.
Definition at line 716 of file InstrTypes.h.
static bool llvm::BinaryOperator::classof | ( | const Instruction * | I | ) | [inline, static] |
Methods for support type inquiry through isa, cast, and dyn_cast:.
Reimplemented from llvm::Instruction.
Reimplemented in llvm::SetCondInst.
Definition at line 713 of file InstrTypes.h.
static bool llvm::BinaryOperator::classof | ( | const BinaryOperator * | ) | [inline, static] |
Definition at line 712 of file InstrTypes.h.
BinaryOperator * BinaryOperator::clone | ( | ) | const [virtual] |
clone() - Create a copy of 'this' instruction that is identical in all ways except the following: The instruction has no parent The instruction has no name
Implements llvm::Instruction.
Definition at line 1266 of file Instructions.cpp.
References create(), and getOpcode().
Referenced by llvm::SimplifyCFG().
BinaryOperator * BinaryOperator::create | ( | BinaryOps | Op, | |
Value * | S1, | |||
Value * | S2, | |||
const std::string & | Name, | |||
BasicBlock * | InsertAtEnd | |||
) | [static] |
create() - Construct a binary instruction, given the opcode and the two operands. Also automatically insert this instruction to the end of the BasicBlock specified.
Definition at line 967 of file Instructions.cpp.
References create(), and llvm::BasicBlock::getInstList().
BinaryOperator * BinaryOperator::create | ( | BinaryOps | Op, | |
Value * | S1, | |||
Value * | S2, | |||
const std::string & | Name = "" , |
|||
Instruction * | InsertBefore = 0 | |||
) | [static] |
create() - Construct a binary instruction, given the opcode and the two operands. Optionally (if InstBefore is specified) insert the instruction into a BasicBlock right before the specified instruction. The specified Instruction is allowed to be a dereferenced end iterator.
Definition at line 951 of file Instructions.cpp.
References BinaryOperator(), llvm::Value::getType(), and InsertBefore.
Referenced by clone(), llvm::ConvertExpressionToType(), create(), llvm::IncrementCounterInBlock(), llvm::DefaultIntrinsicLowering::LowerIntrinsicCall(), llvm::BytecodeReader::ParseInstruction(), and llvm::SimplifyCFG().
BinaryOperator * BinaryOperator::createNeg | ( | Value * | Op, | |
const std::string & | Name, | |||
BasicBlock * | InsertAtEnd | |||
) | [static] |
Definition at line 987 of file Instructions.cpp.
References BinaryOperator(), llvm::ConstantFP::get(), llvm::Constant::getNullValue(), and Op.
Referenced by llvm::SCEVExpander::visitMulExpr().
BinaryOperator * BinaryOperator::createNot | ( | Value * | Op, | |
const std::string & | Name, | |||
BasicBlock * | InsertAtEnd | |||
) | [static] |
Definition at line 1013 of file Instructions.cpp.
References BinaryOperator(), llvm::ConstantPacked::get(), llvm::ConstantIntegral::getAllOnesValue(), and Op.
BinaryOperator * BinaryOperator::createNot | ( | Value * | Op, | |
const std::string & | Name = "" , |
|||
Instruction * | InsertBefore = 0 | |||
) | [static] |
Definition at line 999 of file Instructions.cpp.
References BinaryOperator(), llvm::CallingConv::C, llvm::ConstantPacked::get(), llvm::ConstantIntegral::getAllOnesValue(), InsertBefore, and Op.
Referenced by LowerCTLZ(), llvm::DefaultIntrinsicLowering::LowerIntrinsicCall(), and llvm::SimplifyCFG().
getNegArgument, getNotArgument - Helper functions to extract the unary argument of a NEG or NOT operation implemented via Sub or Xor.
Definition at line 1058 of file Instructions.cpp.
Definition at line 1062 of file Instructions.cpp.
References getOperand(), isConstantAllOnes(), and isNot().
Definition at line 1073 of file Instructions.cpp.
unsigned llvm::BinaryOperator::getNumOperands | ( | ) | const [inline] |
BinaryOps llvm::BinaryOperator::getOpcode | ( | ) | const [inline] |
Subclass classification... getOpcode() returns a member of one of the enums that is coming soon (down below)...
Reimplemented from llvm::Instruction.
Definition at line 696 of file InstrTypes.h.
Referenced by FoldSetCCLogical::apply(), clone(), dyn_castFoldableMul(), FindSingleUseMultiplyFactors(), llvm::SetCondInst::getInverseCondition(), getSetCondCode(), llvm::SetCondInst::getSwappedCondition(), NegateValue(), OptimizeGlobalAddressOfMalloc(), and llvm::Interpreter::visitBinaryOperator().
Value* llvm::BinaryOperator::getOperand | ( | unsigned | i | ) | const [inline] |
Transparently provide more efficient getOperand methods.
Reimplemented from llvm::User.
Definition at line 138 of file InstrTypes.h.
Referenced by FoldSetCCLogical::apply(), AddMaskingAnd::apply(), AddRHS::apply(), dyn_castFoldableMul(), FindSingleUseMultiplyFactors(), getNegArgument(), getNotArgument(), init(), NegateValue(), and llvm::Interpreter::visitBinaryOperator().
AllocaInst llvm::BinaryOperator::HANDLE_MEMORY_INST | ( | 24 | , | |
Load | , | |||
LoadInst | ||||
) |
llvm::BinaryOperator::HANDLE_MEMORY_INST | ( | 21 | , | |
Malloc | , | |||
MallocInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst llvm::BinaryOperator::HANDLE_MEMORY_INST | ( | 23 | , | |
Alloca | , | |||
AllocaInst | ||||
) |
AllocaInst llvm::BinaryOperator::HANDLE_MEMORY_INST | ( | 24 | , | |
Load | , | |||
LoadInst | ||||
) |
llvm::BinaryOperator::HANDLE_MEMORY_INST | ( | 21 | , | |
Malloc | , | |||
MallocInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 40 | , | |
ShuffleVector | , | |||
ShuffleVectorInst | ||||
) |
Helper functions to construct and inspect unary operations (NEG and NOT) via binary operators SUB and XOR:
createNeg, createNot - Create the NEG and NOT instructions out of SUB and XOR instructions.
AllocaInst PHINode CallInst SelectInst VAArgInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 38 | , | |
ExtractElement | , | |||
ExtractElementInst | ||||
) |
AllocaInst PHINode CallInst SelectInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 35 | , | |
UserOp1 | , | |||
Instruction | ||||
) |
AllocaInst PHINode CallInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 30 | , | |
Shl | , | |||
ShiftInst | ||||
) |
AllocaInst PHINode llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 28 | , | |
Cast | , | |||
CastInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst LoadInst CastInst ShiftInst Instruction ExtractElementInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 39 | , | |
InsertElement | , | |||
InsertElementInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst LoadInst CastInst ShiftInst Instruction llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 37 | , | |
VAArg | , | |||
VAArgInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst LoadInst CastInst ShiftInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 34 | , | |
Select | , | |||
SelectInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst LoadInst CastInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 29 | , | |
Call | , | |||
CallInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst MallocInst LoadInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 27 | , | |
PHI | , | |||
PHINode | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 40 | , | |
ShuffleVector | , | |||
ShuffleVectorInst | ||||
) |
AllocaInst PHINode CallInst SelectInst VAArgInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 38 | , | |
ExtractElement | , | |||
ExtractElementInst | ||||
) |
AllocaInst PHINode CallInst SelectInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 35 | , | |
UserOp1 | , | |||
Instruction | ||||
) |
AllocaInst PHINode CallInst llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 30 | , | |
Shl | , | |||
ShiftInst | ||||
) |
AllocaInst PHINode llvm::BinaryOperator::HANDLE_OTHER_INST | ( | 28 | , | |
Cast | , | |||
CastInst | ||||
) |
void BinaryOperator::init | ( | BinaryOps | iType | ) | [protected] |
Definition at line 917 of file Instructions.cpp.
References llvm::Type::BoolTy, getOperand(), llvm::Value::getType(), llvm::MVT::isFloatingPoint(), and llvm::MVT::isInteger().
Referenced by BinaryOperator().
bool BinaryOperator::isNeg | ( | const Value * | V | ) | [static] |
isNeg, isNot - Check if the given Value is a NEG or NOT instruction.
Definition at line 1035 of file Instructions.cpp.
References llvm::ConstantFP::get(), llvm::Constant::getNullValue(), llvm::Constant::getOperand(), and V.
Referenced by getNegArgument().
bool BinaryOperator::isNot | ( | const Value * | V | ) | [static] |
Definition at line 1045 of file Instructions.cpp.
References isConstantAllOnes(), and V.
Referenced by getNotArgument(), and llvm::InstructionNode::InstructionNode().
void llvm::BinaryOperator::setOperand | ( | unsigned | i, | |
Value * | Val | |||
) | [inline] |
Reimplemented from llvm::User.
Definition at line 142 of file InstrTypes.h.
References Val.
Referenced by NegateValue().
bool BinaryOperator::swapOperands | ( | ) |
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 order dependent (SetLT f.e.) the opcode is changed. If the instruction cannot be reversed (ie, it's a Div), then return true.
FIXME: SetCC instructions shouldn't all have different opcodes.
Definition at line 1083 of file Instructions.cpp.
References llvm::Instruction::isCommutative().
Referenced by FoldSetCCLogical::apply().
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst const std::string Instruction* llvm::BinaryOperator::InsertBefore = 0) |
AllocaInst PHINode CallInst SelectInst VAArgInst InsertElementInst const std::string& llvm::BinaryOperator::Name = "" |