mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-10 14:12:11 +00:00
[mips] [IAS] Refactor the function which checks for the availability 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234996 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4c0055402f
commit
e3d79bbe9f
@ -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);
|
||||
@ -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);
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user