summaryrefslogtreecommitdiff
path: root/src/gpu-compute/wavefront.cc
diff options
context:
space:
mode:
authorAlexandru Dutu <alexandru.dutu@amd.com>2016-09-16 12:29:01 -0400
committerAlexandru Dutu <alexandru.dutu@amd.com>2016-09-16 12:29:01 -0400
commit791837645002679eb3f7f71469d151c10c533d5c (patch)
treea439673ec08094ef232631307d3edba5f20c8673 /src/gpu-compute/wavefront.cc
parentd5c8c5d3db1954ff4e33dade0812fed7b60a9269 (diff)
downloadgem5-791837645002679eb3f7f71469d151c10c533d5c.tar.xz
gpu-compute: Changing reconvergenceStack type
std::stack has no iterators, therefore the reconvergence stack can't be iterated without poping elements off. We will be using std::list instead to be able to iterate for saving and restoring purposes.
Diffstat (limited to 'src/gpu-compute/wavefront.cc')
-rw-r--r--src/gpu-compute/wavefront.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/gpu-compute/wavefront.cc b/src/gpu-compute/wavefront.cc
index 76a0bdf9e..3deb11961 100644
--- a/src/gpu-compute/wavefront.cc
+++ b/src/gpu-compute/wavefront.cc
@@ -873,7 +873,7 @@ Wavefront::pushToReconvergenceStack(uint32_t pc, uint32_t rpc,
const VectorMask& mask)
{
assert(mask.count());
- reconvergenceStack.emplace(new ReconvergenceStackEntry(pc, rpc, mask));
+ reconvergenceStack.emplace_back(new ReconvergenceStackEntry{pc, rpc, mask});
}
void
@@ -886,7 +886,7 @@ Wavefront::popFromReconvergenceStack()
execMask().to_string<char, std::string::traits_type,
std::string::allocator_type>().c_str(), pc());
- reconvergenceStack.pop();
+ reconvergenceStack.pop_back();
DPRINTF(WavefrontStack, "%3i %s\n", pc(),
execMask().to_string<char, std::string::traits_type,
@@ -904,32 +904,32 @@ Wavefront::discardFetch()
uint32_t
Wavefront::pc() const
{
- return reconvergenceStack.top()->pc;
+ return reconvergenceStack.back()->pc;
}
uint32_t
Wavefront::rpc() const
{
- return reconvergenceStack.top()->rpc;
+ return reconvergenceStack.back()->rpc;
}
VectorMask
Wavefront::execMask() const
{
- return reconvergenceStack.top()->execMask;
+ return reconvergenceStack.back()->execMask;
}
bool
Wavefront::execMask(int lane) const
{
- return reconvergenceStack.top()->execMask[lane];
+ return reconvergenceStack.back()->execMask[lane];
}
void
Wavefront::pc(uint32_t new_pc)
{
- reconvergenceStack.top()->pc = new_pc;
+ reconvergenceStack.back()->pc = new_pc;
}
uint32_t