Page 348 - ARM 64 Bit Assembly Language
P. 348

338 Chapter 10















                                        Figure 10.4: Examples of the trn instruction.


                  •  T must be 8b, 16b, 4h, 8h, 2s, 4s,or 2d.
                  •  Larger matrices can be transposed using a divide-and-conquer approach.


                  10.3.4.2 Operation
                   Name     Effect                               Description
                   trn1     n ← # of elements                    Copy even elements of Vn and Vm into
                            for 0 ≤ i< n do                      Vd, interleaved.
                              if even(i) then
                               Vd[i]← Vn[i]
                              else

                               Vd[i]← Vm[i − 1]
                              end if
                            end for
                   trn2     n ← # of elements                    Copy odd elements of Vn and Vm into
                            for 0 ≤ i< n do                      Vd, interleaved.
                              if even(i) then
                               Vd[i]← Vn[i + 1]
                              else
                               Vd[i]← Vm[i]
                              end if
                            end for

                  10.3.4.3 Examples

                1     // Transpose a 2x2 matrix of 32-bit elements in v3:v4, store
                2     // transposed matrix in v0:v1
                3     trn1      v0.2s,v3.2s,v4.2s
                4     trn2      v1.2s,v3.2s,v4.2s
                5     // Transpose eight 2x2 matrices of 16-bit elements
   343   344   345   346   347   348   349   350   351   352   353