All instructions

07 SVE · deinterleave

UZP1

Elements 0 and 2 of each source walk into the destination — even lanes only.

Instruction
uzp1 z0.s, z1.s, z2.s

Types: z0.s, z1.s, z2.s — 32-bit float, 4 lanes each. Drawn at SVL = 128 bits; at SVL = 512 one uzp1 still fills a whole vector: 8 + 8 even elements.

z1.s

z2.s

z0.s

· · · ·

z0 ← evens of z1, then evens of z2

Ready. z0.s will be rebuilt from the even elements.

Arrow keys step, space plays or pauses.

Reading the picture

  1. Even and odd

    uzp1 takes elements 0 and 2 of each source — the dimmed odd lanes never move. uzp2 takes 1 and 3 instead; together they split one interleaved stream into two.

  2. Why deinterleave

    Stereo audio, colour planes, interleaved captures: memory often arrives interleaved, while SIMD wants contiguous lanes of one kind. uzp is that bridge — and zip1 interleaves back.

  3. No predicate here

    uzp moves whole vectors, so there is no p0. Every element is data being shuffled, not work being masked — TBL and FMLAL are the other unpredicated instruction pages here.

This pass unpacks z1.s = {1, 9, 3, 8} and z2.s = {5, 7, 2, 6}.