mirror of
https://github.com/RPCS3/llvm.git
synced 2025-05-17 19:06:09 +00:00

Summary: This class maintains the same logic as the original RetireControlUnit. This is just an intermediate patch to make the RCU a Stage. Future patches will remove the dependency on the DispatchStage, and then more properly populate the pre/execute/post Stage interface. Reviewers: andreadb, RKSimon, courbet Reviewed By: andreadb, courbet Subscribers: javed.absar, mgorny, tschuett, gbedwell, llvm-commits Differential Revision: https://reviews.llvm.org/D47244 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@333292 91177308-0d34-0410-b5e6-96231b3b80d8
49 lines
1.5 KiB
C++
49 lines
1.5 KiB
C++
//===---------------------- RetireStage.h -----------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
/// \file
|
|
///
|
|
/// This file defines the retire stage of an instruction pipeline.
|
|
/// The RetireStage represents the process logic that interacts with the
|
|
/// simulated RetireControlUnit hardware.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_MCA_RETIRE_STAGE_H
|
|
#define LLVM_TOOLS_LLVM_MCA_RETIRE_STAGE_H
|
|
|
|
#include "RegisterFile.h"
|
|
#include "RetireControlUnit.h"
|
|
#include "Stage.h"
|
|
|
|
namespace mca {
|
|
|
|
class Backend;
|
|
|
|
class RetireStage : public Stage {
|
|
// Owner will go away when we move listeners/eventing to the stages.
|
|
Backend *Owner;
|
|
RetireControlUnit &RCU;
|
|
RegisterFile &PRF;
|
|
|
|
public:
|
|
RetireStage(Backend *B, RetireControlUnit &R, RegisterFile &F)
|
|
: Stage(), Owner(B), RCU(R), PRF(F) {}
|
|
RetireStage(const RetireStage &Other) = delete;
|
|
RetireStage &operator=(const RetireStage &Other) = delete;
|
|
|
|
virtual void preExecute(const InstRef &IR) override final;
|
|
virtual bool execute(InstRef &IR) override final { return true; }
|
|
void notifyInstructionRetired(const InstRef &IR);
|
|
void onInstructionExecuted(unsigned TokenID);
|
|
};
|
|
|
|
} // namespace mca
|
|
|
|
#endif // LLVM_TOOLS_LLVM_MCA_RETIRE_STAGE_H
|