aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Target/ARM/AsmParser/ARMAsmParser.cpp7
-rw-r--r--test/MC/ARM/basic-thumb2-instructions.s12
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index 59e5e84c7e..b8100ab0c1 100644
--- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -3217,9 +3217,10 @@ getMnemonicAcceptInfo(StringRef Mnemonic, bool &CanAcceptCarrySet,
Mnemonic == "mul" || Mnemonic == "bic" || Mnemonic == "asr" ||
Mnemonic == "umlal" || Mnemonic == "orr" || Mnemonic == "mvn" ||
Mnemonic == "rsb" || Mnemonic == "rsc" || Mnemonic == "orn" ||
- Mnemonic == "sbc" || Mnemonic == "umull" ||
- Mnemonic == "eor" || Mnemonic == "smlal" || Mnemonic == "neg" ||
- ((Mnemonic == "mov" || Mnemonic == "mla") && !isThumb())) {
+ Mnemonic == "sbc" || Mnemonic == "umull" || Mnemonic == "eor" ||
+ Mnemonic == "neg" ||
+ (!isThumb() && (Mnemonic == "mov" || Mnemonic == "mla" ||
+ Mnemonic == "smlal"))) {
CanAcceptCarrySet = true;
} else {
CanAcceptCarrySet = false;
diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s
index 13b71b4947..2adb665a62 100644
--- a/test/MC/ARM/basic-thumb2-instructions.s
+++ b/test/MC/ARM/basic-thumb2-instructions.s
@@ -1787,6 +1787,18 @@ _func:
@------------------------------------------------------------------------------
+@ SMLAL
+@------------------------------------------------------------------------------
+ smlal r2, r3, r5, r8
+ it eq
+ smlaleq r2, r3, r5, r8
+
+@ CHECK: smlal r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0x08,0x23]
+@ CHECK: it eq @ encoding: [0x08,0xbf]
+@ CHECK: smlaleq r2, r3, r5, r8 @ encoding: [0xc5,0xfb,0x08,0x23]
+
+
+@------------------------------------------------------------------------------
@ SUB (register)
@------------------------------------------------------------------------------
sub.w r5, r2, r12, rrx