diff options
Diffstat (limited to 'llvm/tools/llvm-mca/lib/Instruction.cpp')
| -rw-r--r-- | llvm/tools/llvm-mca/lib/Instruction.cpp | 24 | 
1 files changed, 12 insertions, 12 deletions
| diff --git a/llvm/tools/llvm-mca/lib/Instruction.cpp b/llvm/tools/llvm-mca/lib/Instruction.cpp index 511e7b20703..12b6e185ced 100644 --- a/llvm/tools/llvm-mca/lib/Instruction.cpp +++ b/llvm/tools/llvm-mca/lib/Instruction.cpp @@ -120,10 +120,10 @@ void Instruction::execute() {    Stage = IS_EXECUTING;    // Set the cycles left before the write-back stage. -  CyclesLeft = Desc.MaxLatency; +  CyclesLeft = getLatency(); -  for (UniqueDef &Def : Defs) -    Def->onInstructionIssued(); +  for (WriteState &WS : getDefs()) +    WS.onInstructionIssued();    // Transition to the "executed" stage if this is a zero-latency instruction.    if (!CyclesLeft) @@ -139,21 +139,21 @@ void Instruction::forceExecuted() {  void Instruction::update() {    assert(isDispatched() && "Unexpected instruction stage found!"); -  if (!all_of(Uses, [](const UniqueUse &Use) { return Use->isReady(); })) +  if (!all_of(getUses(), [](const ReadState &Use) { return Use.isReady(); }))      return;    // A partial register write cannot complete before a dependent write. -  auto IsDefReady = [&](const UniqueDef &Def) { -    if (const WriteState *Write = Def->getDependentWrite()) { +  auto IsDefReady = [&](const WriteState &Def) { +    if (const WriteState *Write = Def.getDependentWrite()) {        int WriteLatency = Write->getCyclesLeft();        if (WriteLatency == UNKNOWN_CYCLES)          return false; -      return static_cast<unsigned>(WriteLatency) < Desc.MaxLatency; +      return static_cast<unsigned>(WriteLatency) < getLatency();      }      return true;    }; -  if (all_of(Defs, IsDefReady)) +  if (all_of(getDefs(), IsDefReady))      Stage = IS_READY;  } @@ -162,8 +162,8 @@ void Instruction::cycleEvent() {      return;    if (isDispatched()) { -    for (UniqueUse &Use : Uses) -      Use->cycleEvent(); +    for (ReadState &Use : getUses()) +      Use.cycleEvent();      update();      return; @@ -171,8 +171,8 @@ void Instruction::cycleEvent() {    assert(isExecuting() && "Instruction not in-flight?");    assert(CyclesLeft && "Instruction already executed?"); -  for (UniqueDef &Def : Defs) -    Def->cycleEvent(); +  for (WriteState &Def : getDefs()) +    Def.cycleEvent();    CyclesLeft--;    if (!CyclesLeft)      Stage = IS_EXECUTED; | 

