SVE Instruction List by Dougall Johnson
# PFIRST: Set the first active predicate element to true

PFIRST Pdn.B, Pg, Pdn.B (SVE (SME

svbool_t svpfirst[_b](svbool_t pg, svbool_t op)

## 128-bit SVE

Find the lowest non-zero bit from (1), and set that bit in (3), preserving all other bits from (2). If all bits of (1) are zero, preserve all bits from (2). This operation sets the flags based on the resulting predicate (3), using (1) as the governing predicate.

## 256-bit SVE

Find the lowest non-zero bit from (1), and set that bit in (3), preserving all other bits from (2). If all bits of (1) are zero, preserve all bits from (2). This operation sets the flags based on the resulting predicate (3), using (1) as the governing predicate.

## 512-bit SVE

Find the lowest non-zero bit from (1), and set that bit in (3), preserving all other bits from (2). If all bits of (1) are zero, preserve all bits from (2). This operation sets the flags based on the resulting predicate (3), using (1) as the governing predicate.

## Larger sizes

## 1024-bit SVE

Find the lowest non-zero bit from (1), and set that bit in (3), preserving all other bits from (2). If all bits of (1) are zero, preserve all bits from (2). This operation sets the flags based on the resulting predicate (3), using (1) as the governing predicate.

## 2048-bit SVE

Find the lowest non-zero bit from (1), and set that bit in (3), preserving all other bits from (2). If all bits of (1) are zero, preserve all bits from (2). This operation sets the flags based on the resulting predicate (3), using (1) as the governing predicate.

Report mistakes or give feedback

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