3.11.31. VSEL

Provides an alternative to a pair of conditional VMOV instructions according to the condition codes in the GE flags.

Syntax

VSEL{cond}.F<32|64> <Sd|Dd>, <Sn|Dn>, <Sm|Dm>

Where:

cond

Is an optional condition code. See Conditional execution. VSEL has a subset of the condition codes. The condition codes for VSEL are limited to GE, GT, EQ and VS, with the effect that LT, LE, NE and VC is achievable by exchanging the source operands.

<Sd|Dd>

Is the destination single-precision or double-precision floating-point value.

<Sn|Dn>, <Sm|Dm>

Are the operand single-precision or double-precision floating-point values.

Operation

Depending on the result of the condition code, this instruction moves either:

  • <Sn|Dn> source register to the destination register.

  • <Sm|Dm> source register to the destination register.

The behavior is:

EncodingSpecificOperations();
ExecuteFPCheck();

if dp_operation then
   D[d] = if ConditionHolds(cond) then D[n] else D[m];
else
   S[d] = if ConditionHolds(cond) then S[n] else S[m];

Restrictions

The VSEL instruction must not occur inside an IT block.

Condition flags

These instructions do not change the flags.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118