| Index: src/IceInst.cpp
|
| diff --git a/src/IceInst.cpp b/src/IceInst.cpp
|
| index 9706ce962534867837abc5152f056f9284cef875..9602935a478544e7124b3cfd4ad1c02c936d2a5a 100644
|
| --- a/src/IceInst.cpp
|
| +++ b/src/IceInst.cpp
|
| @@ -196,7 +196,7 @@ void Inst::liveness(InstNumberT InstNumber, llvm::BitVector &Live,
|
|
|
| InstAlloca::InstAlloca(Cfg *Func, Operand *ByteCount, uint32_t AlignInBytes,
|
| Variable *Dest)
|
| - : Inst(Func, Inst::Alloca, 1, Dest), AlignInBytes(AlignInBytes) {
|
| + : InstHighLevel(Func, Inst::Alloca, 1, Dest), AlignInBytes(AlignInBytes) {
|
| // Verify AlignInBytes is 0 or a power of 2.
|
| assert(AlignInBytes == 0 || llvm::isPowerOf2_32(AlignInBytes));
|
| addSource(ByteCount);
|
| @@ -204,7 +204,7 @@ InstAlloca::InstAlloca(Cfg *Func, Operand *ByteCount, uint32_t AlignInBytes,
|
|
|
| InstArithmetic::InstArithmetic(Cfg *Func, OpKind Op, Variable *Dest,
|
| Operand *Source1, Operand *Source2)
|
| - : Inst(Func, Inst::Arithmetic, 2, Dest), Op(Op) {
|
| + : InstHighLevel(Func, Inst::Arithmetic, 2, Dest), Op(Op) {
|
| addSource(Source1);
|
| addSource(Source2);
|
| }
|
| @@ -221,7 +221,7 @@ bool InstArithmetic::isCommutative() const {
|
| }
|
|
|
| InstAssign::InstAssign(Cfg *Func, Variable *Dest, Operand *Source)
|
| - : Inst(Func, Inst::Assign, 1, Dest) {
|
| + : InstHighLevel(Func, Inst::Assign, 1, Dest) {
|
| addSource(Source);
|
| }
|
|
|
| @@ -230,7 +230,7 @@ InstAssign::InstAssign(Cfg *Func, Variable *Dest, Operand *Source)
|
| // semantics, there is at most one edge from one node to another.
|
| InstBr::InstBr(Cfg *Func, Operand *Source, CfgNode *TargetTrue,
|
| CfgNode *TargetFalse)
|
| - : Inst(Func, Inst::Br, 1, NULL), TargetFalse(TargetFalse),
|
| + : InstHighLevel(Func, Inst::Br, 1, NULL), TargetFalse(TargetFalse),
|
| TargetTrue(TargetTrue) {
|
| if (TargetTrue == TargetFalse) {
|
| TargetTrue = NULL; // turn into unconditional version
|
| @@ -240,7 +240,8 @@ InstBr::InstBr(Cfg *Func, Operand *Source, CfgNode *TargetTrue,
|
| }
|
|
|
| InstBr::InstBr(Cfg *Func, CfgNode *Target)
|
| - : Inst(Func, Inst::Br, 0, NULL), TargetFalse(Target), TargetTrue(NULL) {}
|
| + : InstHighLevel(Func, Inst::Br, 0, NULL), TargetFalse(Target),
|
| + TargetTrue(NULL) {}
|
|
|
| NodeList InstBr::getTerminatorEdges() const {
|
| NodeList OutEdges;
|
| @@ -251,27 +252,27 @@ NodeList InstBr::getTerminatorEdges() const {
|
| }
|
|
|
| InstCast::InstCast(Cfg *Func, OpKind CastKind, Variable *Dest, Operand *Source)
|
| - : Inst(Func, Inst::Cast, 1, Dest), CastKind(CastKind) {
|
| + : InstHighLevel(Func, Inst::Cast, 1, Dest), CastKind(CastKind) {
|
| addSource(Source);
|
| }
|
|
|
| InstExtractElement::InstExtractElement(Cfg *Func, Variable *Dest,
|
| Operand *Source1, Operand *Source2)
|
| - : Inst(Func, Inst::ExtractElement, 2, Dest) {
|
| + : InstHighLevel(Func, Inst::ExtractElement, 2, Dest) {
|
| addSource(Source1);
|
| addSource(Source2);
|
| }
|
|
|
| InstFcmp::InstFcmp(Cfg *Func, FCond Condition, Variable *Dest, Operand *Source1,
|
| Operand *Source2)
|
| - : Inst(Func, Inst::Fcmp, 2, Dest), Condition(Condition) {
|
| + : InstHighLevel(Func, Inst::Fcmp, 2, Dest), Condition(Condition) {
|
| addSource(Source1);
|
| addSource(Source2);
|
| }
|
|
|
| InstIcmp::InstIcmp(Cfg *Func, ICond Condition, Variable *Dest, Operand *Source1,
|
| Operand *Source2)
|
| - : Inst(Func, Inst::Icmp, 2, Dest), Condition(Condition) {
|
| + : InstHighLevel(Func, Inst::Icmp, 2, Dest), Condition(Condition) {
|
| addSource(Source1);
|
| addSource(Source2);
|
| }
|
| @@ -279,19 +280,19 @@ InstIcmp::InstIcmp(Cfg *Func, ICond Condition, Variable *Dest, Operand *Source1,
|
| InstInsertElement::InstInsertElement(Cfg *Func, Variable *Dest,
|
| Operand *Source1, Operand *Source2,
|
| Operand *Source3)
|
| - : Inst(Func, Inst::InsertElement, 3, Dest) {
|
| + : InstHighLevel(Func, Inst::InsertElement, 3, Dest) {
|
| addSource(Source1);
|
| addSource(Source2);
|
| addSource(Source3);
|
| }
|
|
|
| InstLoad::InstLoad(Cfg *Func, Variable *Dest, Operand *SourceAddr)
|
| - : Inst(Func, Inst::Load, 1, Dest) {
|
| + : InstHighLevel(Func, Inst::Load, 1, Dest) {
|
| addSource(SourceAddr);
|
| }
|
|
|
| InstPhi::InstPhi(Cfg *Func, SizeT MaxSrcs, Variable *Dest)
|
| - : Inst(Func, Phi, MaxSrcs, Dest) {
|
| + : InstHighLevel(Func, Phi, MaxSrcs, Dest) {
|
| Labels = Func->allocateArrayOf<CfgNode *>(MaxSrcs);
|
| }
|
|
|
| @@ -350,14 +351,14 @@ Inst *InstPhi::lower(Cfg *Func) {
|
| }
|
|
|
| InstRet::InstRet(Cfg *Func, Operand *RetValue)
|
| - : Inst(Func, Ret, RetValue ? 1 : 0, NULL) {
|
| + : InstHighLevel(Func, Ret, RetValue ? 1 : 0, NULL) {
|
| if (RetValue)
|
| addSource(RetValue);
|
| }
|
|
|
| InstSelect::InstSelect(Cfg *Func, Variable *Dest, Operand *Condition,
|
| Operand *SourceTrue, Operand *SourceFalse)
|
| - : Inst(Func, Inst::Select, 3, Dest) {
|
| + : InstHighLevel(Func, Inst::Select, 3, Dest) {
|
| assert(typeElementType(Condition->getType()) == IceType_i1);
|
| addSource(Condition);
|
| addSource(SourceTrue);
|
| @@ -365,14 +366,14 @@ InstSelect::InstSelect(Cfg *Func, Variable *Dest, Operand *Condition,
|
| }
|
|
|
| InstStore::InstStore(Cfg *Func, Operand *Data, Operand *Addr)
|
| - : Inst(Func, Inst::Store, 2, NULL) {
|
| + : InstHighLevel(Func, Inst::Store, 2, NULL) {
|
| addSource(Data);
|
| addSource(Addr);
|
| }
|
|
|
| InstSwitch::InstSwitch(Cfg *Func, SizeT NumCases, Operand *Source,
|
| CfgNode *LabelDefault)
|
| - : Inst(Func, Inst::Switch, 1, NULL), LabelDefault(LabelDefault),
|
| + : InstHighLevel(Func, Inst::Switch, 1, NULL), LabelDefault(LabelDefault),
|
| NumCases(NumCases) {
|
| addSource(Source);
|
| Values = Func->allocateArrayOf<uint64_t>(NumCases);
|
| @@ -400,24 +401,25 @@ NodeList InstSwitch::getTerminatorEdges() const {
|
| }
|
|
|
| InstUnreachable::InstUnreachable(Cfg *Func)
|
| - : Inst(Func, Inst::Unreachable, 0, NULL) {}
|
| + : InstHighLevel(Func, Inst::Unreachable, 0, NULL) {}
|
|
|
| InstFakeDef::InstFakeDef(Cfg *Func, Variable *Dest, Variable *Src)
|
| - : Inst(Func, Inst::FakeDef, Src ? 1 : 0, Dest) {
|
| + : InstHighLevel(Func, Inst::FakeDef, Src ? 1 : 0, Dest) {
|
| assert(Dest);
|
| if (Src)
|
| addSource(Src);
|
| }
|
|
|
| InstFakeUse::InstFakeUse(Cfg *Func, Variable *Src)
|
| - : Inst(Func, Inst::FakeUse, 1, NULL) {
|
| + : InstHighLevel(Func, Inst::FakeUse, 1, NULL) {
|
| assert(Src);
|
| addSource(Src);
|
| }
|
|
|
| InstFakeKill::InstFakeKill(Cfg *Func, const VarList &KilledRegs,
|
| const Inst *Linked)
|
| - : Inst(Func, Inst::FakeKill, KilledRegs.size(), NULL), Linked(Linked) {
|
| + : InstHighLevel(Func, Inst::FakeKill, KilledRegs.size(), NULL),
|
| + Linked(Linked) {
|
| for (VarList::const_iterator I = KilledRegs.begin(), E = KilledRegs.end();
|
| I != E; ++I) {
|
| Variable *Var = *I;
|
| @@ -449,12 +451,6 @@ void Inst::dumpDecorated(const Cfg *Func) const {
|
| Str << "\n";
|
| }
|
|
|
| -void Inst::emit(const Cfg * /*Func*/) const {
|
| - llvm_unreachable("emit() called on a non-lowered instruction");
|
| -}
|
| -
|
| -void Inst::emitIAS(const Cfg *Func) const { emit(Func); }
|
| -
|
| void Inst::dump(const Cfg *Func) const {
|
| Ostream &Str = Func->getContext()->getStrDump();
|
| dumpDest(Func);
|
| @@ -754,6 +750,4 @@ void InstTarget::dump(const Cfg *Func) const {
|
| Inst::dump(Func);
|
| }
|
|
|
| -void InstTarget::dumpExtras(const Cfg *Func) const { Inst::dumpExtras(Func); }
|
| -
|
| } // end of namespace Ice
|
|
|