982c982
< PhysRegIndex dest_reg =
---
> PhysRegIdPtr dest_reg =
987,990c987,989
< // @todo Figure out a cleaner way to handle this.
< if (dest_reg >= numPhysRegs) {
< DPRINTF(IQ, "dest_reg :%d, numPhysRegs: %d\n", dest_reg,
< numPhysRegs);
---
> if (dest_reg->isFixedMapping()) {
> DPRINTF(IQ, "Reg %d [%s] is part of a fix mapping, skipping\n",
> dest_reg->regIdx, RegClassStrings[dest_reg->regClass]);
994,995c993,995
< DPRINTF(IQ, "Waking any dependents on register %i.\n",
< (int) dest_reg);
---
> DPRINTF(IQ, "Waking any dependents on register %i (%s).\n",
> dest_reg->regIdx,
> RegClassStrings[dest_reg->regClass]);
999c999
< DynInstPtr dep_inst = dependGraph.pop(dest_reg);
---
> DynInstPtr dep_inst = dependGraph.pop(dest_reg->flatIdx);
1013c1013
< dep_inst = dependGraph.pop(dest_reg);
---
> dep_inst = dependGraph.pop(dest_reg->flatIdx);
1020,1021c1020,1021
< assert(dependGraph.empty(dest_reg));
< dependGraph.clearInst(dest_reg);
---
> assert(dependGraph.empty(dest_reg->flatIdx));
> dependGraph.clearInst(dest_reg->flatIdx);
1024c1024
< regScoreboard[dest_reg] = true;
---
> regScoreboard[dest_reg->flatIdx] = true;
1222c1222
< PhysRegIndex src_reg =
---
> PhysRegIdPtr src_reg =
1235,1236c1235,1236
< src_reg < numPhysRegs) {
< dependGraph.remove(src_reg, squashed_inst);
---
> !src_reg->isFixedMapping()) {
> dependGraph.remove(src_reg->flatIdx, squashed_inst);
1303c1303
< PhysRegIndex src_reg = new_inst->renamedSrcRegIdx(src_reg_idx);
---
> PhysRegIdPtr src_reg = new_inst->renamedSrcRegIdx(src_reg_idx);
1309c1309
< if (src_reg >= numPhysRegs) {
---
> if (src_reg->isFixedMapping()) {
1311,1312c1311,1312
< } else if (!regScoreboard[src_reg]) {
< DPRINTF(IQ, "Instruction PC %s has src reg %i that "
---
> } else if (!regScoreboard[src_reg->flatIdx]) {
> DPRINTF(IQ, "Instruction PC %s has src reg %i (%s) that "
1314c1314,1315
< new_inst->pcState(), src_reg);
---
> new_inst->pcState(), src_reg->regIdx,
> RegClassStrings[src_reg->regClass]);
1316c1317
< dependGraph.insert(src_reg, new_inst);
---
> dependGraph.insert(src_reg->flatIdx, new_inst);
1322c1323
< DPRINTF(IQ, "Instruction PC %s has src reg %i that "
---
> DPRINTF(IQ, "Instruction PC %s has src reg %i (%s) that "
1324c1325,1326
< new_inst->pcState(), src_reg);
---
> new_inst->pcState(), src_reg->regIdx,
> RegClassStrings[src_reg->regClass]);
1348c1350
< PhysRegIndex dest_reg = new_inst->renamedDestRegIdx(dest_reg_idx);
---
> PhysRegIdPtr dest_reg = new_inst->renamedDestRegIdx(dest_reg_idx);
1350,1352c1352
< // Instructions that use the misc regs will have a reg number
< // higher than the normal physical registers. In this case these
< // registers are not renamed, and there is no need to track
---
> // Some registers have fixed mapping, and there is no need to track
1354c1354
< if (dest_reg >= numPhysRegs) {
---
> if (dest_reg->isFixedMapping()) {
1358c1358
< if (!dependGraph.empty(dest_reg)) {
---
> if (!dependGraph.empty(dest_reg->flatIdx)) {
1360c1360,1362
< panic("Dependency graph %i not empty!", dest_reg);
---
> panic("Dependency graph %i (%s) (flat: %i) not empty!",
> dest_reg->regIdx, RegClassStrings[dest_reg->regClass],
> dest_reg->flatIdx);
1363c1365
< dependGraph.setInst(dest_reg, new_inst);
---
> dependGraph.setInst(dest_reg->flatIdx, new_inst);
1366c1368
< regScoreboard[dest_reg] = false;
---
> regScoreboard[dest_reg->flatIdx] = false;