Page 383 - ARM 64 Bit Assembly Language
P. 383

Advanced SIMD instructions 373

                     10.8.1 Vector shift left by immediate

                     These instructions shift each element in a vector left by an immediate value:

                     shl        Unsigned Shift Left Immediate,
                     qshl       Saturating Signed or Unsigned Shift Left Immediate,
                     sqshlu     Saturating Signed Shift Left Immediate Unsigned, and
                     shll       Signed or Unsigned Shift Left Immediate Long.
                     Overflow conditions can be avoided by using the saturating version, or by using the long ver-
                     sion, in which case the destination is twice the size of the source.


                     10.8.1.1 Syntax

                          shl              Vd.T, Vn.T, #shift
                          (s|u)qshl        Vd.T, Vn.T, #shift
                          sqshlu           Vd.T, Vn.T, #shift
                          (s|u)shll{2}     Vd.Td, Vn.Ts, #shift



                     •   UXTL Vd.Td, Vn.Ts is an alias for USHLL Vd.Td,Vn.Ts,#0.
                     •   UXTL2 Vd.Td, Vn.Ts is an alias for USHLL2 Vd.Td,Vn.Ts,#0.
                     •   SXTL Vd.Td, Vn.Ts is an alias for SSHLL Vd.Td,Vn.Ts,#0.
                     •   SXTL2 Vd.Td, Vn.Ts is an alias for SSHLL2 Vd.Td,Vn.Ts,#0.
                     •   T is 8b, 16b, 4h, 8h, 2s, 4s,or 2d.
                     •   If 2 is present, then Td/Ts is 8h/16b, 4s/8h,or 2d/4s.
                     •   If 2 is not present, then Td/Ts is 8h/8b, 4s/4h,or 2d/2s.
                     •   shift is in the range 0 to size(T) − 1.
                     •   If the instruction begins with u, then the elements are treated as unsigned integers.
                     •   If s is present, then the elements are treated as signed integers.


                     10.8.1.2 Operations

                       Name     Effect                               Description
                       shl      Vd[] ← Vm[]   imm                    Each element of Vm is shifted left by
                                                                     the immediate value and stored in the
                                                                     corresponding element of Vd. Bits
                                                                     shifted past the end of an element are
                                                                     lost.
                                                                                    continued on next page
   378   379   380   381   382   383   384   385   386   387   388