Page 381 - ARM 64 Bit Assembly Language
P. 381

Advanced SIMD instructions 371

                     •   If Ts is s,then Vm must be in the range s0 to s15.
                     •   If x is present, then 0 ×±∞ → ±2 (vector).


                     10.7.7.2 Operations

                       Name       Effect                              Description
                       fmul{x}    Fd ← Fn × Vm[x]                     Multiply scalar register Fn by one
                                                                      element of register Vm and store the
                                                                      results in scalar register Fd.
                       fmla       Fd ← Fd + (Fn × Vm[x])              Multiply scalar register Fn by one
                                                                      element of register Vm vector and
                                                                      add the results to scalar register Fd.
                       fmls       Fd ← Fd − (Fn × Vm[x])              Multiply scalar register Fn by one
                                                                      element of register Vm vector and
                                                                      subtract the results from scalar regis-
                                                                      ter Fd.

                     10.7.7.3 Examples


                    1     fmul    d0,d1,v7.d[1]    // Multiply d1 by v7[i]
                    2     fmla    s0,s3,v5.s[3]    // Multiply-accumulate



                     10.7.8 Saturating multiply scalar by element and double


                     These instructions perform multiplication, double the results, and perform saturation:
                     sqdmull    Saturating Multiply Scalar by Element and Double,
                     sqdmlal    Saturating Multiply Scalar by Element, Double, and Accumulate, and
                     sqdmlsl    Saturating Multiply Scalar by Element, Double, and Subtract.


                     10.7.8.1 Syntax

                          sqd<op>l       Fd, Fn, Vm.Ts[x]
                          sq{r}dmulh     Fa, Fb, Vc.Tc[x]



                     •   <op> is either mull, mlal,or mlsl.
                     •   Fd/Fn/Ts must be s/h/h or d/s/s.
                     •   If Ts is h,then Vm must be in the range v0-v15.
   376   377   378   379   380   381   382   383   384   385   386