SVE Instruction List by Dougall Johnson
# CLASTA (scalar): Conditionally extract element after last to general-purpose register

CLASTA Wdn, Pg, Wdn, Zm.H (SVE (SME

bfloat16_t svclasta[_n_bf16](svbool_t pg, bfloat16_t fallback, svbfloat16_t data)

float16_t svclasta[_n_f16](svbool_t pg, float16_t fallback, svfloat16_t data)

int16_t svclasta[_n_s16](svbool_t pg, int16_t fallback, svint16_t data)

uint16_t svclasta[_n_u16](svbool_t pg, uint16_t fallback, svuint16_t data)

## 128-bit SVE

Find the last (leftmost) 16-bit element from (2) where the corresponding predicate bit in (1) is non-zero, then set (4) to the next element. If the last corresponding predicate bit is non-zero, set (4) to the first (rightmost) element from (1). If all corresponding predicate bits are zero, preserve the value from the low 16-bits of (3), zeroing the high bits.

## 256-bit SVE

Find the last (leftmost) 16-bit element from (2) where the corresponding predicate bit in (1) is non-zero, then set (4) to the next element. If the last corresponding predicate bit is non-zero, set (4) to the first (rightmost) element from (1). If all corresponding predicate bits are zero, preserve the value from the low 16-bits of (3), zeroing the high bits.

## 512-bit SVE

Find the last (leftmost) 16-bit element from (2) where the corresponding predicate bit in (1) is non-zero, then set (4) to the next element. If the last corresponding predicate bit is non-zero, set (4) to the first (rightmost) element from (1). If all corresponding predicate bits are zero, preserve the value from the low 16-bits of (3), zeroing the high bits.

## Larger sizes

## 1024-bit SVE

Find the last (leftmost) 16-bit element from (2) where the corresponding predicate bit in (1) is non-zero, then set (4) to the next element. If the last corresponding predicate bit is non-zero, set (4) to the first (rightmost) element from (1). If all corresponding predicate bits are zero, preserve the value from the low 16-bits of (3), zeroing the high bits.

## 2048-bit SVE

Find the last (leftmost) 16-bit element from (2) where the corresponding predicate bit in (1) is non-zero, then set (4) to the next element. If the last corresponding predicate bit is non-zero, set (4) to the first (rightmost) element from (1). If all corresponding predicate bits are zero, preserve the value from the low 16-bits of (3), zeroing the high bits.

Report mistakes or give feedback

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