| |||
| Home > Programmer’s Model > The program status registers > The Q flag | |||
You can set the Sticky Overflow, Q flag, to 1 by executing certain multiply and fractional arithmetic instructions:
QADD
QDADD
QSUB
QDSUB
SMLAD
SMLAxy
SMLAWy
SMLSD
SMUAD
SSAT
SSAT16
USAT
USAT16.
The Q flag is sticky in that, when set to 1 by an instruction,
it remains set until explicitly cleared to 0 by an MSR instruction
writing to the CPSR. Instructions cannot execute conditionally on
the status of the Q flag.
To determine the status of the Q flag, you must read the PSR into a register and extract the Q flag from this. See the individual instruction definitions in the ARM Architecture Reference Manual for details of how you can set and clear the Q flag.