MCInstrDesc &MCID = getInstDesc(Inst.getOpcode());
SMLoc Loc = Operands[0]->getStartLoc();
// Check the IT block state first.
- if (inITBlock()) {
+ // NOTE: In Thumb mode, the BKPT instruction has the interesting property of
+ // being allowed in IT blocks, but not being predicable. It just always
+ // executes.
+ if (inITBlock() && Inst.getOpcode() != ARM::tBKPT) {
unsigned bit = 1;
if (ITState.FirstCond)
ITState.FirstCond = false;
@ CHECK: bic.w r8, r8, r5, asr #15 @ encoding: [0x28,0xea,0xe5,0x38]
@ CHECK: bic.w r12, r12, r6, ror #29 @ encoding: [0x2c,0xea,0x76,0x7c]
+@------------------------------------------------------------------------------
+@ BKPT
+@------------------------------------------------------------------------------
+ it pl
+ bkpt #234
+
+@ CHECK: it pl @ encoding: [0x58,0xbf]
+@ CHECK: bkpt #234 @ encoding: [0xea,0xbe]
@------------------------------------------------------------------------------
@ BXJ