summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Barnes <[email protected]>2021-05-13 10:42:38 -0400
committerAaron Barnes <[email protected]>2021-05-13 10:42:38 -0400
commit5945d709530cc1419f624ffb048739f2b70ee1b9 (patch)
tree693d0a3dd835ef6e8e3cd31d3a05c18ed2e62e16 /src
parent6a09900b34d2eaf5397fd24a5892bf09062be732 (diff)
specialized unit should be partitioned too
Diffstat (limited to 'src')
-rw-r--r--src/gpgpu-sim/shader.cc6
-rw-r--r--src/gpgpu-sim/shader.h4
2 files changed, 5 insertions, 5 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index c72ed95..3059b51 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -411,7 +411,7 @@ void shader_core_ctx::create_exec_pipeline() {
m_fu.push_back(new specialized_unit(
&m_pipeline_reg[EX_WB], m_config, this, SPEC_UNIT_START_ID + j,
m_config->m_specialized_unit[j].name,
- m_config->m_specialized_unit[j].latency));
+ m_config->m_specialized_unit[j].latency, k));
m_dispatch_port.push_back(m_config->m_specialized_unit[j].ID_OC_SPEC_ID);
m_issue_port.push_back(m_config->m_specialized_unit[j].OC_EX_SPEC_ID);
}
@@ -2228,8 +2228,8 @@ sp_unit::sp_unit(register_set *result_port, const shader_core_config *config,
specialized_unit::specialized_unit(register_set *result_port,
const shader_core_config *config,
shader_core_ctx *core, unsigned supported_op,
- char *unit_name, unsigned latency)
- : pipelined_simd_unit(result_port, config, latency, core, 0) {
+ char *unit_name, unsigned latency, unsigned issue_reg_id)
+ : pipelined_simd_unit(result_port, config, latency, core, issue_reg_id) {
m_name = unit_name;
m_supported_op = supported_op;
}
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 7987427..fa71af3 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -1239,7 +1239,7 @@ class specialized_unit : public pipelined_simd_unit {
public:
specialized_unit(register_set *result_port, const shader_core_config *config,
shader_core_ctx *core, unsigned supported_op,
- char *unit_name, unsigned latency);
+ char *unit_name, unsigned latency, unsigned issue_reg_id);
virtual bool can_issue(const warp_inst_t &inst) const {
if (inst.op != m_supported_op) {
return false;
@@ -1248,7 +1248,7 @@ class specialized_unit : public pipelined_simd_unit {
}
virtual void active_lanes_in_pipeline();
virtual void issue(register_set &source_reg);
- bool is_issue_partitioned() { return false; }
+ bool is_issue_partitioned() { return true; }
private:
unsigned m_supported_op;