bgrp
SVE Bit Group
Groups bits from source based on mask (0s to left, 1s to right).
Pseudocode Operation
No pseudocode available.
Encoding
Related
More in SVE2
Reference
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0x4500B800 | BGRP <Zd>.<T>, <Zn>.<T>, <Zm>.<T> | A64 | 01000101 | size | 0 | Zm | 1011 | 1 | 0 | Zn | Zd |
Description
This instruction separates bits in each element of the first source vector by gathering from the bit positions indicated by non-zero bits in the corresponding mask element of the second source vector to the lowest-numbered contiguous bits of the corresponding destination element, and from positions indicated by zero bits to the highest-numbered bits of the destination element, preserving the bit order within each group. This instruction is unpredicated. ID_AA64ZFR0_EL1.BitPerm indicates whether this instruction is implemented. This instruction is illegal when executed in Streaming SVE mode, unless FEAT_SME_FA64 is implemented and enabled.
Operation
CheckNonStreamingSVEEnabled();
constant integer VL = CurrentVL;
constant integer elements = VL DIV esize;
bits(VL) data = Z[n, VL];
bits(VL) mask = Z[m, VL];
bits(VL) result;
for e = 0 to elements - 1
Elem[result, e, esize] = BitGroup(Elem[data, e, esize], Elem[mask, e, esize]);
Z[d, VL] = result;