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) {
static std::string toString(const T &source)
virtual bool check(const TTAMachine::Machine &mach) const
void addError(const MachineCheck &check, const std::string &errorMsg)
std::pair< const TTAMachine::RegisterFile *, int > Register
bool checkWithIgnore(const TTAMachine::Machine &mach, const std::set< std::string > &ignoreRFs) const
bool checkPredRegs(const unsigned int ®Count, MachineCheckResults *results) const
FullyConnectedCheck fullyConCheck_
bool checkIntRegs(const TTAMachine::Machine &mach) const
virtual ~RegisterQuantityCheck()
bool canFixIntRegs(const TTAMachine::Machine &mach) const
unsigned int missingIntRegs(const unsigned int ®Count, MachineCheckResults *results, bool isFullyConnected) const
virtual bool check(const TTAMachine::Machine &mach) const
unsigned int countIntRegisters(const TTAMachine::Machine &mach, const std::set< Register > &guardRegs, const std::set< std::string > &ignoreRFs) const
bool fixIntRegs(TTAMachine::Machine &mach) const
void findGuardRegisters(const TTAMachine::Machine &mach, std::set< Register > ®isters, const std::set< std::string > &ignoreRFs) const
virtual int width() const
Guard * guard(int index) const
virtual TCEString name() const
ComponentType * item(int index) const
virtual RegisterFileNavigator registerFileNavigator() const
virtual BusNavigator busNavigator() const
virtual void setNumberOfRegisters(int registers)
int registerIndex() const
const RegisterFile * registerFile() const