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

