mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 05:00:26 +00:00
ARM enclosing curly braces optional on one-register VLD/VST instruction lists.
'vld1.f32 d4, [r7]' should be parsed as equivalent to 'vld1.f32 {d4}, [r7]' rdar://10450488. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144701 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5381cbf4f4
commit
5c984e451d
@ -2487,10 +2487,31 @@ parseRegisterList(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
|
||||
// parse a vector register list
|
||||
ARMAsmParser::OperandMatchResultTy ARMAsmParser::
|
||||
parseVectorList(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
|
||||
if(Parser.getTok().isNot(AsmToken::LCurly))
|
||||
SMLoc S = Parser.getTok().getLoc();
|
||||
// As an extension (to match gas), support a plain D register or Q register
|
||||
// (without encosing curly braces) as a single or double entry list,
|
||||
// respectively.
|
||||
if (Parser.getTok().is(AsmToken::Identifier)) {
|
||||
int Reg = tryParseRegister();
|
||||
if (Reg == -1)
|
||||
return MatchOperand_NoMatch;
|
||||
SMLoc E = Parser.getTok().getLoc();
|
||||
if (ARMMCRegisterClasses[ARM::DPRRegClassID].contains(Reg)) {
|
||||
Operands.push_back(ARMOperand::CreateVectorList(Reg, 1, S, E));
|
||||
return MatchOperand_Success;
|
||||
}
|
||||
if (ARMMCRegisterClasses[ARM::QPRRegClassID].contains(Reg)) {
|
||||
Reg = getDRegFromQReg(Reg);
|
||||
Operands.push_back(ARMOperand::CreateVectorList(Reg, 2, S, E));
|
||||
return MatchOperand_Success;
|
||||
}
|
||||
Error(S, "vector register expected");
|
||||
return MatchOperand_ParseFail;
|
||||
}
|
||||
|
||||
if (Parser.getTok().isNot(AsmToken::LCurly))
|
||||
return MatchOperand_NoMatch;
|
||||
|
||||
SMLoc S = Parser.getTok().getLoc();
|
||||
Parser.Lex(); // Eat '{' token.
|
||||
SMLoc RegLoc = Parser.getTok().getLoc();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user