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.