| |||

Home > NEON and VFP Programming > NEON shift instructions > V{R}SHR{N}, V{R}SRA (by immediate) |

`V{R}SHR{N}`

(Vector Shift Right by immediate value)
takes each element in a vector, right shifts them by an immediate
value, and places the results in the destination vector. The results
can be optionally rounded, or narrowed, or both.

`V{R}SRA`

(Vector Shift Right by immediate value
and Accumulate) takes each element in a vector, right shifts them
by an immediate value, and accumulates the results into the destination
vector. The results can be optionally rounded.

V{R}SHR{}.`cond`

{`datatype`

},`Qd`

, #`Qm`

`imm`

V{R}SHR{}.`cond`

{`datatype`

},`Dd`

, #`Dm`

`imm`

V{R}SRA{}.`cond`

{`datatype`

},`Qd`

, #`Qm`

`imm`

V{R}SRA{}.`cond`

{`datatype`

},`Dd`

, #`Dm`

`imm`

V{R}SHRN{}.`cond`

`datatype`

,`Dd`

, #`Qm`

`imm`

where:

`R`

if present, indicates that the results are rounded. Otherwise, the results are truncated.

`cond`

is an optional condition code.

`datatype`

must be one of:

`S8, S16, S32, S64`

for

`V{R}SHR`

or`V{R}SRA`

`U8, U16, U32, U64`

for

`V{R}SHR`

or`V{R}SRA`

`I16, I32, I64`

for

`V{R}SHRN`

.

,`Qd`

`Qm`

are the destination vector and the operand vector, for a quadword operation.

,`Dd`

`Dm`

are the destination vector and the operand vector, for a doubleword operation.

,`Dd`

`Qm`

are the destination vector and the operand vector, for a narrow operation.

`imm`

is the immediate value specifying the size of the shift, in the range 0 to (size(

) - 1).`datatype`

- Reference: