summaryrefslogtreecommitdiff
path: root/src/gpu-compute
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu-compute')
-rw-r--r--src/gpu-compute/code_enums.hh4
-rw-r--r--src/gpu-compute/compute_unit.cc12
-rw-r--r--src/gpu-compute/wavefront.cc4
3 files changed, 9 insertions, 11 deletions
diff --git a/src/gpu-compute/code_enums.hh b/src/gpu-compute/code_enums.hh
index 126cf6c50..6cd9bfe26 100644
--- a/src/gpu-compute/code_enums.hh
+++ b/src/gpu-compute/code_enums.hh
@@ -84,6 +84,7 @@
||(a)==Enums::OT_PRIVATE_ATOMIC \
||(a)==Enums::OT_SPILL_ATOMIC \
||(a)==Enums::OT_READONLY_ATOMIC \
+ ||(a)==Enums::OT_BOTH_MEMFENCE \
||(a)==Enums::OT_FLAT_ATOMIC)
#define IS_OT_ATOMIC_GM(a) ((a)==Enums::OT_GLOBAL_ATOMIC \
@@ -93,8 +94,7 @@
||(a)==Enums::OT_BOTH_MEMFENCE)
#define IS_OT_ATOMIC_LM(a) ((a)==Enums::OT_SHARED_ATOMIC \
- ||(a)==Enums::OT_SHARED_MEMFENCE \
- ||(a)==Enums::OT_BOTH_MEMFENCE)
+ ||(a)==Enums::OT_SHARED_MEMFENCE)
#define IS_OT_ATOMIC_PM(a) ((a)==Enums::OT_PRIVATE_ATOMIC)
diff --git a/src/gpu-compute/compute_unit.cc b/src/gpu-compute/compute_unit.cc
index d3622007a..63f3e8fb5 100644
--- a/src/gpu-compute/compute_unit.cc
+++ b/src/gpu-compute/compute_unit.cc
@@ -587,8 +587,8 @@ void
ComputeUnit::init()
{
// Initialize CU Bus models
- glbMemToVrfBus.init(&shader->tick_cnt, 1);
- locMemToVrfBus.init(&shader->tick_cnt, 1);
+ glbMemToVrfBus.init(&shader->tick_cnt, shader->ticks(1));
+ locMemToVrfBus.init(&shader->tick_cnt, shader->ticks(1));
nextGlbMemBus = 0;
nextLocMemBus = 0;
fatal_if(numGlbMemUnits > 1,
@@ -596,7 +596,7 @@ ComputeUnit::init()
vrfToGlobalMemPipeBus.resize(numGlbMemUnits);
for (int j = 0; j < numGlbMemUnits; ++j) {
vrfToGlobalMemPipeBus[j] = WaitClass();
- vrfToGlobalMemPipeBus[j].init(&shader->tick_cnt, 1);
+ vrfToGlobalMemPipeBus[j].init(&shader->tick_cnt, shader->ticks(1));
}
fatal_if(numLocMemUnits > 1,
@@ -604,7 +604,7 @@ ComputeUnit::init()
vrfToLocalMemPipeBus.resize(numLocMemUnits);
for (int j = 0; j < numLocMemUnits; ++j) {
vrfToLocalMemPipeBus[j] = WaitClass();
- vrfToLocalMemPipeBus[j].init(&shader->tick_cnt, 1);
+ vrfToLocalMemPipeBus[j].init(&shader->tick_cnt, shader->ticks(1));
}
vectorRegsReserved.resize(numSIMDs, 0);
aluPipe.resize(numSIMDs);
@@ -612,12 +612,12 @@ ComputeUnit::init()
for (int i = 0; i < numSIMDs + numLocMemUnits + numGlbMemUnits; ++i) {
wfWait[i] = WaitClass();
- wfWait[i].init(&shader->tick_cnt, 1);
+ wfWait[i].init(&shader->tick_cnt, shader->ticks(1));
}
for (int i = 0; i < numSIMDs; ++i) {
aluPipe[i] = WaitClass();
- aluPipe[i].init(&shader->tick_cnt, 1);
+ aluPipe[i].init(&shader->tick_cnt, shader->ticks(1));
}
// Setup space for call args
diff --git a/src/gpu-compute/wavefront.cc b/src/gpu-compute/wavefront.cc
index 0aa033db1..ed13b22c7 100644
--- a/src/gpu-compute/wavefront.cc
+++ b/src/gpu-compute/wavefront.cc
@@ -162,7 +162,6 @@ Wavefront::isGmInstruction(GPUDynInstPtr ii)
if (IS_OT_READ_GM(ii->opType()) || IS_OT_WRITE_GM(ii->opType()) ||
IS_OT_ATOMIC_GM(ii->opType())) {
-
return true;
}
@@ -349,7 +348,7 @@ Wavefront::ready(itype_e type)
}
bool locMemBusRdy = false;
bool locMemIssueRdy = false;
- if (type == I_SHARED) {
+ if (type == I_SHARED || type == I_FLAT) {
for (int j=0; j < computeUnit->numLocMemUnits; ++j) {
if (computeUnit->vrfToLocalMemPipeBus[j].prerdy())
locMemBusRdy = true;
@@ -598,7 +597,6 @@ Wavefront::ready(itype_e type)
DPRINTF(GPUExec, "CU%d: WF[%d][%d]: Ready Inst : %s\n", computeUnit->cu_id,
simdId, wfSlotId, ii->disassemble());
-
return 1;
}