Page 337 - ARM 64 Bit Assembly Language
P. 337

Advanced SIMD instructions 327

                                                                                                    d0
                       green 2    red 2    blue 1   green 1    red 1    blue 0   green 0    red 0
                        red 5    blue 4    green 4   red 4     blue 3   green 3   red 3     blue 2  d1
                        blue 7   green 7    red 7    blue 6   green 6    red 6    blue 5   green 5  d2
                                   Figure 10.2: Pixel data interleaved in thee doubleword registers.


                        red 7     red 6     red 5    red 4     red 3     red 2    red 1     red 0   d0
                       green 7   green 6   green 5  green 4   green 3   green 2  green 1   green 0  d1
                        blue 7   blue 6    blue 5    blue 4    blue 3   blue 2    blue 1    blue 0  d2
                                  Figure 10.3: Pixel data de-interleaved in thee doubleword registers.



                     split the image data into color channels, where each channel is stored in a different register, as
                     shown in Fig. 10.3.


                     Other examples of interleaved data include stereo audio, which is two interleaved channels,
                     and surround sound, which may have up to nine interleaved channels. In all of these cases,
                     most processing operations are simplified when the data is separated into non-interleaved
                     channels.



                     10.2.1 Load or store single structure using one lane


                     These instructions are used to load and store structured data across multiple registers:
                     ld<n>      Load Structured Data, and
                     st<n>      Store Structured Data.

                     They can be used for interleaving or deinterleaving the data as it is loaded or stored, as shown
                     in Fig. 10.3.


                     10.2.1.1 Syntax

                          <op><n> <list>[index],[Xn]
                          <op><n> <list>[index],[Xn],Xm
                          <op><n> <list>[index],[Xn],#imm


                     •   <op> must be either ld or st.
                     •   <n> must be one of 1, 2, 3,or 4.
   332   333   334   335   336   337   338   339   340   341   342