SVE Instruction List by Dougall Johnson
# SRI: Shift right and insert (immediate)

SRI Zd.H, Zn.H, #const (SVE2 (SME

svint16_t svsri[_n_s16](svint16_t op1, svint16_t op2, uint64_t imm3)

svuint16_t svsri[_n_u16](svuint16_t op1, svuint16_t op2, uint64_t imm3)

## 128-bit SVE

For each 16-bit unsigned integer set (3) to ( (2) >> const ) | ( (1) & ~( 0xFFFF >> const ) ). This preserves the *const* most-significant bits from (1), while inserting the ( 16 − const ) most-significant bits from (2) into the least-significant bits of (3). The shift amount is limited to 1 ≤ const ≤ 16.

## 256-bit SVE

For each 16-bit unsigned integer set (3) to ( (2) >> const ) | ( (1) & ~( 0xFFFF >> const ) ). This preserves the *const* most-significant bits from (1), while inserting the ( 16 − const ) most-significant bits from (2) into the least-significant bits of (3). The shift amount is limited to 1 ≤ const ≤ 16.

## 512-bit SVE

For each 16-bit unsigned integer set (3) to ( (2) >> const ) | ( (1) & ~( 0xFFFF >> const ) ). This preserves the *const* most-significant bits from (1), while inserting the ( 16 − const ) most-significant bits from (2) into the least-significant bits of (3). The shift amount is limited to 1 ≤ const ≤ 16.

## Larger sizes

## 1024-bit SVE

For each 16-bit unsigned integer set (3) to ( (2) >> const ) | ( (1) & ~( 0xFFFF >> const ) ). This preserves the *const* most-significant bits from (1), while inserting the ( 16 − const ) most-significant bits from (2) into the least-significant bits of (3). The shift amount is limited to 1 ≤ const ≤ 16.

## 2048-bit SVE

For each 16-bit unsigned integer set (3) to ( (2) >> const ) | ( (1) & ~( 0xFFFF >> const ) ). This preserves the *const* most-significant bits from (1), while inserting the ( 16 − const ) most-significant bits from (2) into the least-significant bits of (3). The shift amount is limited to 1 ≤ const ≤ 16.

Report mistakes or give feedback

Inspired by and based on the x86/x64 SIMD Instruction List by Daytime.