summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp')
-rw-r--r--llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index 18dccb26b877..e534f1f7146d 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -8308,6 +8308,14 @@ bool ARMAsmParser::validateInstruction(MCInst &Inst,
return Error (Operands[3]->getStartLoc(), "Q-register indexes must be 2 and 0 or 3 and 1");
break;
}
+ case ARM::MVE_SQRSHR:
+ case ARM::MVE_UQRSHL: {
+ if (Operands[2]->getReg() == Operands[3]->getReg()) {
+ return Error(Operands[2]->getStartLoc(),
+ "Rda register and Rm register can't be identical");
+ }
+ break;
+ }
case ARM::UMAAL:
case ARM::UMLAL:
case ARM::UMULL:
@@ -12668,11 +12676,7 @@ bool ARMAsmParser::enableArchExtFeature(StringRef Name, SMLoc &ExtLoc) {
{ARM::AEK_MAVERICK, {}, {}},
{ARM::AEK_XSCALE, {}, {}},
};
- bool EnableFeature = true;
- if (Name.starts_with_insensitive("no")) {
- EnableFeature = false;
- Name = Name.substr(2);
- }
+ bool EnableFeature = !Name.consume_front_insensitive("no");
uint64_t FeatureKind = ARM::parseArchExt(Name);
if (FeatureKind == ARM::AEK_INVALID)
return Error(ExtLoc, "unknown architectural extension: " + Name);