Page 373 - ARM 64 Bit Assembly Language
P. 373

Advanced SIMD instructions 363

                     10.7.1.2 Operations


                       Name         Effect                             Description
                       {f}mul{x}    Vd[] ← Vn[] × Vm[]                 Multiply corresponding elements
                                                                       from two vectors and store the re-
                                                                       sults in a third vector.
                       {f}mla       Vd[] ← Vd[] + (Vn[] × Vm[])        Multiply corresponding elements
                                                                       from two vectors and add the re-
                                                                       sults to a third vector.
                       {f}mls       Vd[] ← Vd[] − (Vn[] × Vm[])        Multiply corresponding elements
                                                                       from two vectors and subtract the
                                                                       results from a third vector.
                       fdiv         Vd[] ← Vd[] ÷ (Vn[] × Vm[])        Divide elements from Vn by cor-
                                                                       responding elements from Vm and
                                                                       store the results in a third vector.
                       (s|u)mull    Vd[] ← Vn[] × Vm[]                 Multiply corresponding elements
                                                                       from two vectors and store the re-
                                                                       sults in a third vector.
                       (s|u)mlal    Vd[] ← Vd[] + (Vn[] × Vm[])        Multiply corresponding elements
                                                                       from two vectors and add the re-
                                                                       sults in a third vector.
                       (s|u)mlsl    Vd[] ← Vd[] − (Vn[] × Vm[])        Multiply corresponding elements
                                                                       from two vectors and subtract the
                                                                       results from a third vector.
                       pmul{l}      Vd[] ← Vd[] − (Vn[] × Vm[])        Multiply corresponding elements
                                                                       from two vectors and store the
                                                                       results in a third vector. This in-
                                                                       struction is particularly useful for
                                                                       binary field multiplication, which is
                                                                       used in cryptography.



                     10.7.1.3 Examples


                    1     mul    v1.8h,v6.8h,v8.8h  // Multiply elements
                    2     smlal  v0.4s,v4.4h,v5.4h  // Multiply-accumulate long
                    3     fmul   v1.4s,v6.4s,v7.4s  // Multiply elements
   368   369   370   371   372   373   374   375   376   377   378