Skip to content

PLOOP

Operation

Builds the next predicate chunk from a remaining count and lane offset.

Assembler Syntax

PLOOP.{B|W|L|Q}(z) Rn(r), Rn(s), Pn(p), <ea>(e)

Privilege

Unprivileged

Required CPUID flags

VECTOR

PLOOP reads an unsigned remaining count and an unsigned lane offset. Let \(N\) denote the number of lanes for the selected element width. If the remaining count is zero, PLOOP transfers control to the encoded target and leaves the predicate and both scalar registers unchanged.

For a nonzero remaining count, an offset at or above the selected element count raises VECTOR_LOOP_OFFSET_OUT_OF_RANGE and commits no state. A valid iteration sets the next \(\min(\operatorname{remaining},\,N-\operatorname{offset})\) significant predicate positions, clears every other predicate bit, subtracts the number of set positions from the remaining count, clears the offset register, and falls through.

With offset 2 and enough work for the rest of the scalable W-lane image, PLOOP activates lanes 2 through N minus 1, subtracts N minus 2 from the remaining count, and clears the offset.

PLOOP.W head iteration

With offset zero and at least N W lanes remaining, PLOOP activates the complete predicate image, subtracts N from the remaining count, and keeps the offset at zero.

PLOOP.W body iteration

With four W lanes remaining and offset zero, PLOOP activates lanes zero through three and writes zero to both scalar state registers.

PLOOP.W tail iteration

With four W lanes remaining and offset two, PLOOP activates lanes two through five and writes zero to both scalar state registers.

PLOOP.W head-tail iteration

2.75in

Encodings

PLOOP.{B|W|L|Q}(z) Rn(r), Rn(s), Pn(p), <ea>(e)

Format: Instruction format for PLOOP.{B|W|L|Q}(z) Rn(r), Rn(s), Pn(p), <ea>(e)

Format: Instruction format for PLOOP.{B|W|L|Q}(z) Rn(r), Rn(s), Pn(p), <ea>(e)

remaining, offsetillegal_instruction