diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 4314d743b7be..59e5e84c7e4c 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -3261,7 +3261,7 @@ bool ARMAsmParser::shouldOmitCCOutOperand(StringRef Mnemonic, // We do this as post-processing of the explicit operands rather than just // conditionally adding the cc_out in the first place because we need // to check the type of the parsed immediate operand. - if (Mnemonic == "mov" && Operands.size() > 4 && + if (Mnemonic == "mov" && Operands.size() > 4 && !isThumb() && !static_cast(Operands[4])->isARMSOImm() && static_cast(Operands[4])->isImm0_65535Expr() && static_cast(Operands[1])->getReg() == 0) diff --git a/llvm/test/MC/ARM/basic-thumb2-instructions.s b/llvm/test/MC/ARM/basic-thumb2-instructions.s index bbc30663adf5..5f0ccf12c5e2 100644 --- a/llvm/test/MC/ARM/basic-thumb2-instructions.s +++ b/llvm/test/MC/ARM/basic-thumb2-instructions.s @@ -1013,6 +1013,7 @@ _func: movseq r1, #12 moveq r1, #12 movne.w r1, #12 + mov.w r6, #450 @ CHECK: movs r1, #21 @ encoding: [0x15,0x21] @ CHECK: movs.w r1, #21 @ encoding: [0x5f,0xf0,0x15,0x01] @@ -1027,6 +1028,7 @@ _func: @ CHECK: movseq.w r1, #12 @ encoding: [0x5f,0xf0,0x0c,0x01] @ CHECK: moveq r1, #12 @ encoding: [0x0c,0x21] @ CHECK: movne.w r1, #12 @ encoding: [0x4f,0xf0,0x0c,0x01] +@ CHECK: mov.w r6, #450 @ encoding: [0x4f,0xf4,0xe1,0x76] @------------------------------------------------------------------------------