48 MachineCheck(
"Checks that machine has enough registers") {}
62 std::set<Register> guardRegs;
63 const std::set<std::string> ignoreRFs;
100 const std::set<std::string> empty;
118 const std::set<std::string>& ignoreRFs)
const {
120 std::set<Register> guardRegs;
159 const std::set<std::string>& ignoreRFs)
const {
161 std::set<Register> guardRegs;
188 std::set<Register> guardRegs;
189 const std::set<std::string> ignoreRFs;
218 std::set<Register>& guardRegs,
219 const std::set<std::string>& ignoreRFs)
const {
223 for (
int i = 0; i < busNav.
count(); i++) {
228 if (regGuard != NULL) {
256 const std::set<Register>& guardRegs,
257 const std::set<std::string>& ignoreRFs)
const {
262 unsigned int intRegs = 0;
263 for (
int i = 0; i < regNav.
count(); i++) {
265 if (rf->
width() == 32 &&
266 ignoreRFs.find(rf->
name()) == ignoreRFs.end()) {
267 for (
int j = 0; j < rf->
size(); j++) {
289 const unsigned int& regCount,
293 if (results != NULL) {
294 std::string msg =
"too few predicate registers, 2 needed, ";
316 const unsigned int& regCount,
318 bool isFullyConnected)
const {
320 unsigned int neededIntRegs = isFullyConnected ? 5 : 6;
321 unsigned int missingRegisters = 0;
323 if (regCount < neededIntRegs) {
324 missingRegisters = neededIntRegs - regCount;
325 if (results != NULL) {
326 results->
addError(*
this,
"too few integer registers");
329 return missingRegisters;
342 std::set<Register> guardRegs;
343 const std::set<std::string> ignoreRFs;
349 unsigned int missingRegs =
360 for (
int i = 0; i < regNav.
count(); i++) {
362 if (rf->
width() == 32) {
385 for (
int i = 0; i < regNav.
count(); i++) {
387 if (rf->
width() == 32) {