mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
[mips][microMIPS] Implement microMIPS 16-bit instructions registers
Differential Revision: http://reviews.llvm.org/D5116 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220273 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -492,6 +492,14 @@ public:
|
||||
return RegIdx.RegInfo->getRegClass(ClassID).getRegister(RegIdx.Index);
|
||||
}
|
||||
|
||||
/// Coerce the register to GPR32 and return the real register for the current
|
||||
/// target.
|
||||
unsigned getGPRMM16Reg() const {
|
||||
assert(isRegIdx() && (RegIdx.Kind & RegKind_GPR) && "Invalid access!");
|
||||
unsigned ClassID = Mips::GPR32RegClassID;
|
||||
return RegIdx.RegInfo->getRegClass(ClassID).getRegister(RegIdx.Index);
|
||||
}
|
||||
|
||||
/// Coerce the register to GPR64 and return the real register for the current
|
||||
/// target.
|
||||
unsigned getGPR64Reg() const {
|
||||
@@ -640,6 +648,11 @@ public:
|
||||
Inst.addOperand(MCOperand::CreateReg(getGPR32Reg()));
|
||||
}
|
||||
|
||||
void addGPRMM16AsmRegOperands(MCInst &Inst, unsigned N) const {
|
||||
assert(N == 1 && "Invalid number of operands!");
|
||||
Inst.addOperand(MCOperand::CreateReg(getGPRMM16Reg()));
|
||||
}
|
||||
|
||||
/// Render the operand to an MCInst as a GPR64
|
||||
/// Asserts if the wrong number of operands are requested, or the operand
|
||||
/// is not a k_RegisterIndex compatible with RegKind_GPR
|
||||
@@ -900,6 +913,12 @@ public:
|
||||
bool isGPRAsmReg() const {
|
||||
return isRegIdx() && RegIdx.Kind & RegKind_GPR && RegIdx.Index <= 31;
|
||||
}
|
||||
bool isMM16AsmReg() const {
|
||||
if (!(isRegIdx() && RegIdx.Kind))
|
||||
return false;
|
||||
return ((RegIdx.Index >= 2 && RegIdx.Index <= 7)
|
||||
|| RegIdx.Index == 16 || RegIdx.Index == 17);
|
||||
}
|
||||
bool isFGRAsmReg() const {
|
||||
// AFGR64 is $0-$15 but we handle this in getAFGR64()
|
||||
return isRegIdx() && RegIdx.Kind & RegKind_FGR && RegIdx.Index <= 31;
|
||||
|
||||
Reference in New Issue
Block a user