Page 350 - ARM 64 Bit Assembly Language
P. 350

340 Chapter 10

                  •  T is 8b, 16b, 4h, 8h, 2s, 4s,or 2d.
                  •  For zip and uzp:
                     • If 1 is present, use lower half of source registers.
                     • If 2 is present, use upper half of source registers.

                  •  Ta is either 8b (use only 64 bits of each register) or 16b (use all 128 bits of each regis-
                     ter).
                  •  index is an immediate value in the range 0 to nelem(T) − 1.



                  10.3.5.2 Operations

                   Name     Effect                               Description
                   zip      o ← 0                                Interleave data from two vectors.
                            n ← # of elements
                            if 2 is present then
                              o ← n ÷ 2
                            end if
                            for 0 ≤ i< n do
                              if even(i) then
                               Vd[i]← Fn[i ÷ 2 + o]
                              else
                               Vd[i]← Fm[ i ÷ 2  + o]
                              end if
                            end for
                   uzp      o ← 0                                Deinterleave data from two vectors.
                            if 2 is present then
                              o ← 1
                            end if
                            n ← # of elements
                            for 0 ≤ i< n do
                              if i< n ÷ 2 then

                               Vd[i]← Fn[i × 2 + o]
                              else
                               Vd[i]← Fm[i × 2 + o]
                              end if
                            end for
                                                                                continued on next page
   345   346   347   348   349   350   351   352   353   354   355