SVE Instruction List by Dougall Johnson
# SLI: Shift left and insert (immediate)

SLI Zd.B, Zn.B, #const (SVE2 (SME

svint8_t svsli[_n_s8](svint8_t op1, svint8_t op2, uint64_t imm3)

svuint8_t svsli[_n_u8](svuint8_t op1, svuint8_t op2, uint64_t imm3)

## 128-bit SVE

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

## 256-bit SVE

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

## 512-bit SVE

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

## Larger sizes

## 1024-bit SVE

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

## 2048-bit SVE

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

Report mistakes or give feedback

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