Select bytes from each operand according to the state of the
APSR GE flags.
Syntax
SEL{cond} {Rd}, Rn, Rm
where:
cond
is an optional condition code.
Rd
is the destination register.
Rn
is the register holding the first operand.
Rm
is the register holding the second operand.
Operation
The SEL instruction selects bytes from Rn or Rm according
to the APSR GE flags:
if
GE[0] is set, Rd[7:0] come from Rn[7:0],
otherwise from Rm[7:0]
if GE[1] is set, Rd[15:8] come
from Rn[15:8], otherwise from Rm[15:8]
if GE[2] is set, Rd[23:16] come
from Rn[23:16], otherwise from Rm[23:16]
if GE[3] is set, Rd[31:24] come
from Rn[31:24], otherwise from Rm[31:24].
Usage
Use the SEL instruction after one of the signed
parallel instructions. You can use this to select maximum or minimum
values in multiple byte or halfword data.
Register restrictions
You cannot use PC for any register.
You can use SP in ARM instructions but these are deprecated
in ARMv6T2 and above. You cannot use SP in Thumb instructions.
Condition flags
This instruction does not change the flags.
Architectures
This ARM instruction is available in ARMv6 and above.
These 32-bit Thumb instructions are available in ARMv6T2 and
above. For the ARMv7-M architecture, they are only available in
an ARMv7E-M implementation.
There is no 16-bit Thumb version of this instruction.
Examples
SEL r0, r4, r5
SELLT r4, r0, r4
The following instruction sequence sets each byte in R4 equal
to the unsigned minimum of the corresponding bytes of R1 and R2:
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.