diff options
author | Chris Lattner <sabre@nondot.org> | 2004-03-12 05:51:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-03-12 05:51:05 +0000 |
commit | 4e734dde5475a8f173b988694385869d8c353361 (patch) | |
tree | 8d378d404bbe29c73154c8bcb722d363be62321b /include/llvm | |
parent | 9bb7fbc6cea7bb2e1da11e410d049e8de2ff81f4 (diff) | |
download | external_llvm-4e734dde5475a8f173b988694385869d8c353361.zip external_llvm-4e734dde5475a8f173b988694385869d8c353361.tar.gz external_llvm-4e734dde5475a8f173b988694385869d8c353361.tar.bz2 |
Add the SelectInst class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12311 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/iOther.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/llvm/iOther.h b/include/llvm/iOther.h index f9b60d0..ba76227 100644 --- a/include/llvm/iOther.h +++ b/include/llvm/iOther.h @@ -133,6 +133,49 @@ public: } }; +//===----------------------------------------------------------------------===// +// SelectInst Class +//===----------------------------------------------------------------------===// + +/// SelectInst - This class represents the LLVM 'select' instruction. +/// +class SelectInst : public Instruction { + SelectInst(const SelectInst &SI) : Instruction(SI.getType(), SI.getOpcode()) { + Operands.reserve(3); + Operands.push_back(Use(SI.Operands[0], this)); + Operands.push_back(Use(SI.Operands[1], this)); + Operands.push_back(Use(SI.Operands[2], this)); + } +public: + SelectInst(Value *C, Value *S1, Value *S2, const std::string &Name = "", + Instruction *InsertBefore = 0) + : Instruction(S1->getType(), Instruction::Select, Name, InsertBefore) { + Operands.reserve(3); + Operands.push_back(Use(C, this)); + Operands.push_back(Use(S1, this)); + Operands.push_back(Use(S2, this)); + } + + Value *getCondition() const { return Operands[0]; } + Value *getTrueValue() const { return Operands[1]; } + Value *getFalseValue() const { return Operands[2]; } + + OtherOps getOpcode() const { + return static_cast<OtherOps>(Instruction::getOpcode()); + } + + virtual Instruction *clone() const { return new SelectInst(*this); } + + // Methods for support type inquiry through isa, cast, and dyn_cast: + static inline bool classof(const SelectInst *) { return true; } + static inline bool classof(const Instruction *I) { + return I->getOpcode() == Instruction::Select; + } + static inline bool classof(const Value *V) { + return isa<Instruction>(V) && classof(cast<Instruction>(V)); + } +}; + //===----------------------------------------------------------------------===// // VANextInst Class @@ -171,6 +214,11 @@ public: } }; + +//===----------------------------------------------------------------------===// +// VAArgInst Class +//===----------------------------------------------------------------------===// + /// VAArgInst - This class represents the va_arg llvm instruction, which returns /// an argument of the specified type given a va_list. /// |