All instructions

10 SME · broadcast into tile

ADDHA

One vector lands in every active row of the ZA tile.

Instruction
addha za0.s, p0/m, p1/m, z0.s

Types: 32-bit integer — the z0.s lanes and the 4 × 4 za0.s tile are all 32-bit containers. ADDHA's .s class is the integer form (its .d twin is the 64-bit integer variant); ADDHA has no floating-point form. Drawn at SVL = 128 bits; at SVL = 512 the tile is 16 × 16 and one vector still lands in every row.

p0/m

z0.s

p1/m

z0.s

0,00
0,11
0,20
0,32
1,01
1,10
1,22
1,30
2,00
2,11
2,20
2,31
3,02
3,10
3,21
3,30

ZA[i, j] += z0.s[j]

Ready. The tile still holds the values it had before this ADDHA.

Arrow keys step, space plays or pauses.

Reading the picture

  1. Broadcast into every row

    For each active pair, ZA[i, j] gains z0.s[j]: the vector is added to every horizontal slice that the row predicate allows. One instruction, a whole-tile update.

  2. Two predicates, like FMOPA

    p0/m governs rows and p1/m governs columns — the same shape as FMOPA. There the product depends on both i and j; here only the column picks the value, and it is the same in every row.

  3. ADDVA is the twin

    ADDVA is the vertical twin: ZA[i, j] gains z0.s[i], so the vector runs down every active column instead of along every row.

This pass broadcasts z0.s = {1, 2, 3, 4} into the tile.