40 #include "debug/GPUSRF.hh"
45 #include "params/ScalarRegisterFile.hh"
56 for (
int i = 0;
i < ii->getNumOperands(); ++
i) {
57 if (ii->isScalarRegister(
i) && ii->isSrcOperand(
i)) {
59 int sgprIdx = ii->getRegisterIndex(
i, ii);
60 int nRegs = ii->getOperandSize(
i) <= 4 ? 1 :
61 ii->getOperandSize(
i) / 4;
63 for (
int j = 0;
j < nRegs; ++
j) {
68 if (ii->isDstOperand(
i)) {
69 w->numTimesBlockedDueWAXDependencies++;
70 }
else if (ii->isSrcOperand(
i)) {
71 DPRINTF(GPUSRF,
"RAW stall: WV[%d]: %s: physReg[%d]\n",
72 w->wfDynId, ii->disassemble(), pSgpr);
73 w->numTimesBlockedDueRAWDependencies++;
87 for (
int i = 0;
i < ii->getNumOperands(); ++
i) {
88 if (ii->isScalarRegister(
i) && ii->isDstOperand(
i)) {
90 int sgprIdx = ii->getRegisterIndex(
i, ii);
91 int nRegs = ii->getOperandSize(
i) <= 4 ? 1 :
92 ii->getOperandSize(
i) / 4;
94 for (
int j = 0;
j < nRegs; ++
j) {
108 for (
int i = 0;
i < ii->getNumOperands();
i++) {
109 if (ii->isScalarRegister(
i) && ii->isSrcOperand(
i)) {
110 int DWORDs = ii->getOperandSize(
i) <= 4 ? 1
111 : ii->getOperandSize(
i) / 4;
116 if (!ii->isLoad() && !(ii->isAtomic() || ii->isMemSync())) {
120 for (
int i = 0;
i < ii->getNumOperands();
i++) {
121 if (ii->isScalarRegister(
i) && ii->isDstOperand(
i)) {
122 int sgprIdx = ii->getRegisterIndex(
i, ii);
123 int nRegs = ii->getOperandSize(
i) <= 4 ? 1
124 : ii->getOperandSize(
i) / 4;
125 for (
int j = 0;
j < nRegs;
j++) {
127 mapSgpr(
w, sgprIdx +
j);
141 assert(ii->isLoad() || ii->isAtomicRet());
142 for (
int i = 0;
i < ii->getNumOperands(); ++
i) {
143 if (ii->isScalarRegister(
i) && ii->isDstOperand(
i)) {
145 int sgprIdx = ii->getRegisterIndex(
i, ii);
146 int nRegs = ii->getOperandSize(
i) <= 4 ? 1 :
147 ii->getOperandSize(
i) / 4;
149 for (
int j = 0;
j < nRegs; ++
j) {
151 mapSgpr(
w, sgprIdx +
j);
161 ScalarRegisterFileParams::create()