2.6.9.3.3 Restrictions

The following instructions are not permitted in an IT block:

  • IT
  • CBZ and CBNZ
  • CPSID and CPSIE
  • MOVS.N Rd, Rm.

Other restrictions when using an IT block are:

  • a branch or any instruction that modifies the PC must either be outside an IT block or must be the last instruction inside the IT block. These are:
    • ADD PC, PC, Rm
    • MOV PC, Rm
    • B, BL, BX, BLX
    • any LDM, LDR, or POP instruction that writes to the PC
    • TBB and TBH
  • do not branch to any instruction inside an IT block, except when returning from an exception handler
  • all conditional instructions except Bcond must be inside an IT block. Bcond can be either outside or inside an IT block but has a larger branch range if it is inside one
  • each instruction inside the IT block must specify a condition code suffix that is either the same or logical inverse as for the other instructions in the block.
    Note: Your assembler might place extra restrictions on the use of IT blocks, such as prohibiting the use of assembler directives within them.