| OLD | NEW | 
|---|
| 1 //===- subzero/src/IceInst.cpp - High-level instruction implementation ----===// | 1 //===- subzero/src/IceInst.cpp - High-level instruction implementation ----===// | 
| 2 // | 2 // | 
| 3 //                        The Subzero Code Generator | 3 //                        The Subzero Code Generator | 
| 4 // | 4 // | 
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source | 
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. | 
| 7 // | 7 // | 
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// | 
| 9 // | 9 // | 
| 10 // This file implements the Inst class, primarily the various | 10 // This file implements the Inst class, primarily the various | 
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 447 } | 447 } | 
| 448 | 448 | 
| 449 InstFakeUse::InstFakeUse(Cfg *Func, Variable *Src) | 449 InstFakeUse::InstFakeUse(Cfg *Func, Variable *Src) | 
| 450     : InstHighLevel(Func, Inst::FakeUse, 1, NULL) { | 450     : InstHighLevel(Func, Inst::FakeUse, 1, NULL) { | 
| 451   assert(Src); | 451   assert(Src); | 
| 452   addSource(Src); | 452   addSource(Src); | 
| 453 } | 453 } | 
| 454 | 454 | 
| 455 InstFakeKill::InstFakeKill(Cfg *Func, const VarList &KilledRegs, | 455 InstFakeKill::InstFakeKill(Cfg *Func, const VarList &KilledRegs, | 
| 456                            const Inst *Linked) | 456                            const Inst *Linked) | 
| 457     : InstHighLevel(Func, Inst::FakeKill, KilledRegs.size(), NULL), | 457     : InstHighLevel(Func, Inst::FakeKill, 0, NULL), KilledRegs(KilledRegs), | 
| 458       Linked(Linked) { | 458       Linked(Linked) {} | 
| 459   for (Variable *Var : KilledRegs) |  | 
| 460     addSource(Var); |  | 
| 461 } |  | 
| 462 | 459 | 
| 463 // ======================== Dump routines ======================== // | 460 // ======================== Dump routines ======================== // | 
| 464 | 461 | 
| 465 void Inst::dumpDecorated(const Cfg *Func) const { | 462 void Inst::dumpDecorated(const Cfg *Func) const { | 
| 466   Ostream &Str = Func->getContext()->getStrDump(); | 463   Ostream &Str = Func->getContext()->getStrDump(); | 
| 467   if (!Func->getContext()->isVerbose(IceV_Deleted) && | 464   if (!Func->getContext()->isVerbose(IceV_Deleted) && | 
| 468       (isDeleted() || isRedundantAssign())) | 465       (isDeleted() || isRedundantAssign())) | 
| 469     return; | 466     return; | 
| 470   if (Func->getContext()->isVerbose(IceV_InstNumbers)) { | 467   if (Func->getContext()->isVerbose(IceV_InstNumbers)) { | 
| 471     char buf[30]; | 468     char buf[30]; | 
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 723   Str << ", " << FalseOp->getType() << " "; | 720   Str << ", " << FalseOp->getType() << " "; | 
| 724   FalseOp->dump(Func); | 721   FalseOp->dump(Func); | 
| 725 } | 722 } | 
| 726 | 723 | 
| 727 void InstUnreachable::dump(const Cfg *Func) const { | 724 void InstUnreachable::dump(const Cfg *Func) const { | 
| 728   Ostream &Str = Func->getContext()->getStrDump(); | 725   Ostream &Str = Func->getContext()->getStrDump(); | 
| 729   Str << "unreachable"; | 726   Str << "unreachable"; | 
| 730 } | 727 } | 
| 731 | 728 | 
| 732 void InstFakeDef::emit(const Cfg *Func) const { | 729 void InstFakeDef::emit(const Cfg *Func) const { | 
|  | 730   // Go ahead and "emit" these for now, since they are relatively | 
|  | 731   // rare. | 
| 733   Ostream &Str = Func->getContext()->getStrEmit(); | 732   Ostream &Str = Func->getContext()->getStrEmit(); | 
| 734   Str << "\t# "; | 733   Str << "\t# "; | 
| 735   getDest()->emit(Func); | 734   getDest()->emit(Func); | 
| 736   Str << " = def.pseudo "; | 735   Str << " = def.pseudo "; | 
| 737   emitSources(Func); | 736   emitSources(Func); | 
| 738 } | 737 } | 
| 739 | 738 | 
| 740 void InstFakeDef::dump(const Cfg *Func) const { | 739 void InstFakeDef::dump(const Cfg *Func) const { | 
| 741   Ostream &Str = Func->getContext()->getStrDump(); | 740   Ostream &Str = Func->getContext()->getStrDump(); | 
| 742   dumpDest(Func); | 741   dumpDest(Func); | 
| 743   Str << " = def.pseudo "; | 742   Str << " = def.pseudo "; | 
| 744   dumpSources(Func); | 743   dumpSources(Func); | 
| 745 } | 744 } | 
| 746 | 745 | 
| 747 void InstFakeUse::emit(const Cfg *Func) const { | 746 void InstFakeUse::emit(const Cfg *Func) const { (void)Func; } | 
| 748   Ostream &Str = Func->getContext()->getStrEmit(); |  | 
| 749   Str << "\t# "; |  | 
| 750   Str << "use.pseudo "; |  | 
| 751   emitSources(Func); |  | 
| 752 } |  | 
| 753 | 747 | 
| 754 void InstFakeUse::dump(const Cfg *Func) const { | 748 void InstFakeUse::dump(const Cfg *Func) const { | 
| 755   Ostream &Str = Func->getContext()->getStrDump(); | 749   Ostream &Str = Func->getContext()->getStrDump(); | 
| 756   Str << "use.pseudo "; | 750   Str << "use.pseudo "; | 
| 757   dumpSources(Func); | 751   dumpSources(Func); | 
| 758 } | 752 } | 
| 759 | 753 | 
| 760 void InstFakeKill::emit(const Cfg *Func) const { | 754 void InstFakeKill::emit(const Cfg *Func) const { (void)Func; } | 
| 761   Ostream &Str = Func->getContext()->getStrEmit(); |  | 
| 762   Str << "\t# "; |  | 
| 763   if (Linked->isDeleted()) |  | 
| 764     Str << "// "; |  | 
| 765   Str << "kill.pseudo "; |  | 
| 766   emitSources(Func); |  | 
| 767 } |  | 
| 768 | 755 | 
| 769 void InstFakeKill::dump(const Cfg *Func) const { | 756 void InstFakeKill::dump(const Cfg *Func) const { | 
| 770   Ostream &Str = Func->getContext()->getStrDump(); | 757   Ostream &Str = Func->getContext()->getStrDump(); | 
| 771   if (Linked->isDeleted()) | 758   if (Linked->isDeleted()) | 
| 772     Str << "// "; | 759     Str << "// "; | 
| 773   Str << "kill.pseudo "; | 760   Str << "kill.pseudo "; | 
| 774   dumpSources(Func); | 761   bool First = true; | 
|  | 762   for (Variable *Var : KilledRegs) { | 
|  | 763     if (!First) | 
|  | 764       Str << ", "; | 
|  | 765     First = false; | 
|  | 766     Var->dump(Func); | 
|  | 767   } | 
| 775 } | 768 } | 
| 776 | 769 | 
| 777 void InstTarget::dump(const Cfg *Func) const { | 770 void InstTarget::dump(const Cfg *Func) const { | 
| 778   Ostream &Str = Func->getContext()->getStrDump(); | 771   Ostream &Str = Func->getContext()->getStrDump(); | 
| 779   Str << "[TARGET] "; | 772   Str << "[TARGET] "; | 
| 780   Inst::dump(Func); | 773   Inst::dump(Func); | 
| 781 } | 774 } | 
| 782 | 775 | 
| 783 } // end of namespace Ice | 776 } // end of namespace Ice | 
| OLD | NEW | 
|---|