Fully-functioning spawn and join instructions.
This commit is contained in:
@@ -27,7 +27,7 @@ namespace Harp {
|
||||
|
||||
Reg &operator=(T r) { val = r; doWrite(); return *this; }
|
||||
|
||||
operator T() { doRead(); return val; }
|
||||
operator T() const { doRead(); return val; }
|
||||
|
||||
void trunc(Size s) {
|
||||
Word mask((~0ull >> (sizeof(Word)-s)*8));
|
||||
@@ -40,16 +40,32 @@ namespace Harp {
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
/* Access size here is 8, representing the register size of 64-bit cores. */
|
||||
void doWrite() { reg_doWrite(cpuId, regNum); }
|
||||
void doRead() { reg_doRead(cpuId, regNum); }
|
||||
void doWrite() const { reg_doWrite(cpuId, regNum); }
|
||||
void doRead() const { reg_doRead(cpuId, regNum); }
|
||||
#else
|
||||
void doWrite() {}
|
||||
void doRead() {}
|
||||
void doWrite() const {}
|
||||
void doRead() const {}
|
||||
#endif
|
||||
};
|
||||
|
||||
// Entry in the IPDOM Stack
|
||||
struct DomStackEntry {
|
||||
DomStackEntry(
|
||||
unsigned p, const std::vector<std::vector<Reg<bool> > >& m, Word pc
|
||||
): pc(pc), fallThrough(false)
|
||||
{
|
||||
std::cout << "New DomStackEntry:";
|
||||
for (unsigned i = 0; i < m.size(); ++i) {
|
||||
tmask.push_back(!bool(m[i][p]));
|
||||
std::cout << ' ' << bool(m[i][p]);
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
DomStackEntry(const std::vector<bool> &tmask):
|
||||
tmask(tmask), fallThrough(true) {}
|
||||
|
||||
bool fallThrough;
|
||||
std::vector<bool> tmask;
|
||||
Word pc;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user