diff options
-rw-r--r-- | lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 7 | ||||
-rw-r--r-- | test/MC/ARM/basic-thumb2-instructions.s | 12 |
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 |