summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/scoreboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpu-sim/scoreboard.h')
-rw-r--r--src/gpgpu-sim/scoreboard.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gpgpu-sim/scoreboard.h b/src/gpgpu-sim/scoreboard.h
index 1fe0923..9bf51e6 100644
--- a/src/gpgpu-sim/scoreboard.h
+++ b/src/gpgpu-sim/scoreboard.h
@@ -50,6 +50,12 @@ class Scoreboard {
void printContents() const;
const bool islongop(unsigned warp_id, unsigned regnum);
+ // Secondary scoreboard for intra-warp co-issue (split-level tracking)
+ void reserveRegisterSecondary(unsigned wid, unsigned regnum);
+ void releaseRegisterSecondary(unsigned wid, unsigned regnum);
+ bool checkCollisionSecondary(unsigned wid, const inst_t *inst) const;
+ void clearSecondary(unsigned wid);
+
private:
void reserveRegister(unsigned wid, unsigned regnum);
int get_sid() const { return m_sid; }
@@ -62,6 +68,9 @@ class Scoreboard {
// Register that depend on a long operation (global, local or tex memory)
std::vector<std::set<unsigned> > longopregs;
+ // Secondary path register tracking (for I-Buffer half 1, intra-warp co-issue)
+ std::vector<std::set<unsigned> > sec_reg_table;
+
class gpgpu_t *m_gpu;
};