Page 374 - ARM 64 Bit Assembly Language
P. 374

364 Chapter 10

                  10.7.2 Multiply vector by element

                  These instructions are used to multiply each element in a vector by a scalar:

                  mul       Vector by scalar integer multiply,
                  mla       Vector by scalar integer multiply accumulate,
                  mls       Vector by scalar integer multiply subtract,
                  fmul      Vector by scalar floating point multiply,
                  fmla      Vector by scalar floating point multiply accumulate,
                  fmls      Vector by scalar floating point multiply subtract,
                  mull      Vector by scalar multiply long,
                  mlal      Vector by scalar multiply accumulate long, and
                  mlsl      Vector by scalar multiply subtract long.


                  10.7.2.1 Syntax

                       <op>             Vd.T, Vn.T, Vm.Ts[x]
                       (s|u)<op>l{2}    Vd.Ta, Vn.Tb, Vm.Ts[x]
                       fmul{x}          Vd.Tf, Vn.Tf, Vm.Ts2[x]
                       fmla             Vd.Tf, Vn.Tf, Vm.Ts2[x]
                       fmls             Vd.Tf, Vn.Tf, Vm.Ts2[x]


                  •  <op> is either mul, mla,or mls.
                  •  T/Ts must be 4h/h, 8h/h, 2s/s,or 4s/s.
                  •  Tf/Ts2 must be 2s/s, 4s/s,or 2d/d.
                  •  If x is present, then 0 ×±∞ → ±2 (vector).
                  •  If 2 is present, then
                     • Ta/Tb/Tc is 4s/8h/h or 2d/4s/s.
                     • the upper 64 bits of the source vectors are used.
                  •  If 2 is not present, then Ta/Tb/Tc is 4s/4h/h or 2d/2s/s.


                  10.7.2.2 Operations

                   Name          Effect                        Description
                   {f}mul{x}     Vd[] ← Vn[] × Vm[x]           Multiply all elements from a vector by
                                                               one element of another vector and store
                                                               the results in a third vector.
                                                                                continued on next page
   369   370   371   372   373   374   375   376   377   378   379