SIMD ISAReturn TypeNameArgumentsInstruction Group
Neonint8x16_tvqshrn_high_n_s16(int8x8_t r, int16x8_t a, const int n)Shift / Right / Vector saturating shift right and narrow
Description
Signed saturating Shift Right Narrow (immediate). This instruction reads each vector element in the source SIMD&FP register, right shifts and truncates each result by an immediate value, saturates each shifted result to a value that is half the original width, puts the final result into a vector, and writes the vector to the lower or upper half of the destination SIMD&FP register. All the values in this instruction are signed integer values. The destination vector elements are half as long as the source vector elements. For rounded results, see SQRSHRN.
Results
Vd.16B result
This intrinsic compiles to the following instructions:

SQSHRN2 Vd.16B,Vn.8H,#n

Argument Preparation
r register: Vd.8Ba register: Vn.8Hn minimum: 1; maximum: 8
Architectures
A64

Operation

CheckFPAdvSIMDEnabled64();
bits(datasize*2) operand = V[n];
bits(datasize) result;
integer round_const = if round then (1 << (shift - 1)) else 0;
integer element;
boolean sat;

for e = 0 to elements-1
    element = (Int(Elem[operand, e, 2*esize], unsigned) + round_const) >> shift;
    (Elem[result, e, esize], sat) = SatQ(element, esize, unsigned);
    if sat then FPSR.QC = '1';

Vpart[d, part] = result;