Skip to content

Commit

Permalink
[mips] [IAS] Refactor the function which checks for the availability …
Browse files Browse the repository at this point in the history
…of AT. NFC.

Summary:
Refactor MipsAsmParser::getATReg to return an internal register number instead of a register index.
Also change all the int's to unsigned, seeing as the current AT register index is stored as an unsigned in MipsAssemblerOptions.



Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8478

llvm-svn: 234996
  • Loading branch information
Toma Tabacu committed Apr 15, 2015
1 parent 43d7905 commit 89a712b
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
Expand Up @@ -272,7 +272,10 @@ class MipsAsmParser : public MCTargetAsmParser {

unsigned getGPR(int RegNo);

int getATReg(SMLoc Loc);
/// Returns the internal register number for the current AT. Also checks if
/// the current AT is unavailable (set to $0) and gives an error if it is.
/// This should be used in pseudo-instruction expansions which need AT.
unsigned getATReg(SMLoc Loc);

bool processInstruction(MCInst &Inst, SMLoc IDLoc,
SmallVectorImpl<MCInst> &Instructions);
Expand Down Expand Up @@ -2046,13 +2049,11 @@ void MipsAsmParser::expandMemInst(MCInst &Inst, SMLoc IDLoc,
if (isLoad && IsGPR && (BaseRegNum != RegOpNum))
TmpRegNum = RegOpNum;
else {
int AT = getATReg(IDLoc);
// At this point we need AT to perform the expansions and we exit if it is
// not available.
if (!AT)
TmpRegNum = getATReg(IDLoc);
if (!TmpRegNum)
return;
TmpRegNum = getReg(
(isGP64bit()) ? Mips::GPR64RegClassID : Mips::GPR32RegClassID, AT);
}

TempInst.setOpcode(Mips::LUi);
Expand Down Expand Up @@ -2383,11 +2384,15 @@ int MipsAsmParser::matchMSA128CtrlRegisterName(StringRef Name) {
return CC;
}

int MipsAsmParser::getATReg(SMLoc Loc) {
int AT = AssemblerOptions.back()->getATRegNum();
if (AT == 0)
unsigned MipsAsmParser::getATReg(SMLoc Loc) {
unsigned ATIndex = AssemblerOptions.back()->getATRegNum();
if (ATIndex == 0) {
reportParseError(Loc,
"pseudo-instruction requires $at, which is not available");
return 0;
}
unsigned AT = getReg(
(isGP64bit()) ? Mips::GPR64RegClassID : Mips::GPR32RegClassID, ATIndex);
return AT;
}

Expand Down

0 comments on commit 89a712b

Please sign in to comment.