| OLD | NEW |
| 1 //===- subzero/src/IceOperand.cpp - High-level operand implementation -----===// | 1 //===- subzero/src/IceOperand.cpp - High-level operand 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 Operand class and its target-independent | 10 // This file implements the Operand class and its target-independent |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 const bool IsFromDef = false; | 343 const bool IsFromDef = false; |
| 344 const bool IsImplicit = false; | 344 const bool IsImplicit = false; |
| 345 Metadata[VarNum].markUse(Kind, I, Node, IsFromDef, IsImplicit); | 345 Metadata[VarNum].markUse(Kind, I, Node, IsFromDef, IsImplicit); |
| 346 } | 346 } |
| 347 } | 347 } |
| 348 } | 348 } |
| 349 | 349 |
| 350 for (Inst *I : Node->getInsts()) { | 350 for (Inst *I : Node->getInsts()) { |
| 351 if (I->isDeleted()) | 351 if (I->isDeleted()) |
| 352 continue; | 352 continue; |
| 353 if (InstFakeKill *Kill = llvm::dyn_cast<InstFakeKill>(I)) { | 353 // Note: The implicit definitions (and uses) from InstFakeKill are |
| 354 // A FakeKill instruction indicates certain Variables (usually | 354 // deliberately ignored. |
| 355 // physical scratch registers) are redefined, so we register | |
| 356 // them as defs. | |
| 357 for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) { | |
| 358 Variable *Var = llvm::cast<Variable>(I->getSrc(SrcNum)); | |
| 359 SizeT VarNum = Var->getIndex(); | |
| 360 assert(VarNum < Metadata.size()); | |
| 361 Metadata[VarNum].markDef(Kind, Kill, Node); | |
| 362 } | |
| 363 continue; // no point in executing the rest | |
| 364 } | |
| 365 if (Variable *Dest = I->getDest()) { | 355 if (Variable *Dest = I->getDest()) { |
| 366 SizeT DestNum = Dest->getIndex(); | 356 SizeT DestNum = Dest->getIndex(); |
| 367 assert(DestNum < Metadata.size()); | 357 assert(DestNum < Metadata.size()); |
| 368 Metadata[DestNum].markDef(Kind, I, Node); | 358 Metadata[DestNum].markDef(Kind, I, Node); |
| 369 } | 359 } |
| 370 for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) { | 360 for (SizeT SrcNum = 0; SrcNum < I->getSrcSize(); ++SrcNum) { |
| 371 Operand *Src = I->getSrc(SrcNum); | 361 Operand *Src = I->getSrc(SrcNum); |
| 372 SizeT NumVars = Src->getNumVars(); | 362 SizeT NumVars = Src->getNumVars(); |
| 373 for (SizeT J = 0; J < NumVars; ++J) { | 363 for (SizeT J = 0; J < NumVars; ++J) { |
| 374 const Variable *Var = Src->getVar(J); | 364 const Variable *Var = Src->getVar(J); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 | 508 |
| 519 Ostream &operator<<(Ostream &Str, const RegWeight &W) { | 509 Ostream &operator<<(Ostream &Str, const RegWeight &W) { |
| 520 if (W.getWeight() == RegWeight::Inf) | 510 if (W.getWeight() == RegWeight::Inf) |
| 521 Str << "Inf"; | 511 Str << "Inf"; |
| 522 else | 512 else |
| 523 Str << W.getWeight(); | 513 Str << W.getWeight(); |
| 524 return Str; | 514 return Str; |
| 525 } | 515 } |
| 526 | 516 |
| 527 } // end of namespace Ice | 517 } // end of namespace Ice |
| OLD | NEW |