remove lingering 32-count limits on registers, refactor iteration, improve constants, ...

This commit is contained in:
Joshua Warner
2014-12-09 10:45:35 -07:00
parent a749ba7adc
commit 01de3d9d5c
11 changed files with 104 additions and 106 deletions

View File

@ -23,14 +23,25 @@ TEST(RegisterIterator)
assertEqual<unsigned>(0, regs.start);
assertEqual<unsigned>(7, regs.limit);
RegisterIterator it(regs);
assertTrue(it.hasNext());
assertEqual<unsigned>(0, it.next().index());
assertTrue(it.hasNext());
assertEqual<unsigned>(2, it.next().index());
assertTrue(it.hasNext());
assertEqual<unsigned>(4, it.next().index());
assertTrue(it.hasNext());
assertEqual<unsigned>(6, it.next().index());
assertFalse(it.hasNext());
for(int i = 0; i < 64; i++) {
assertEqual<unsigned>(i, BoundedRegisterMask(static_cast<uint64_t>(1) << i).start);
assertEqual<unsigned>(i + 1, BoundedRegisterMask(static_cast<uint64_t>(1) << i).limit);
}
auto it = regs.begin();
auto end = regs.end();
assertTrue(it != end);
assertEqual<unsigned>(6, (*it).index());
++it;
assertTrue(it != end);
assertEqual<unsigned>(4, (*it).index());
++it;
assertTrue(it != end);
assertEqual<unsigned>(2, (*it).index());
++it;
assertTrue(it != end);
assertEqual<unsigned>(0, (*it).index());
++it;
assertFalse(it != end);
}