Page 372 - ARM 64 Bit Assembly Language
P. 372
362 Chapter 10
10.7.1 Vector multiply and divide
These instructions are used to multiply the corresponding elements from two vectors:
mul Vector integer multiply,
mla Vector integer multiply accumulate,
mls Vector integer multiply subtract,
fmul Vector floating point multiply,
fdiv Vector floating point divide,
fmla Vector floating point multiply accumulate,
fmls Vector floating point multiply subtract,
mull Vector multiply long,
mlal Vector multiply accumulate long,
mlsl Vector multiply subtract long,
pmul Vector polynomial multiply, and
pmull Vector polynomial multiply long.
10.7.1.1 Syntax
mul Vd.T, Vn.T, Vm.T
mla Vd.T, Vn.T, Vm.T
mls Vd.T, Vn.T, Vm.T
(s|u)mull{2} Vd.Td, Vn.Ts, Vm.Ts
(s|u)mlal{2} Vd.Td, Vn.Ts, Vm.Ts
(s|u)mlsl{2} Vd.Td, Vn.Ts, Vm.Ts
fmul{x} Vd.Tf, Vn.Tf, Vm.Tf
fdiv Vd.Tf, Vn.Tf, Vm.Tf
fmla Vd.Tf, Vn.Tf, Vm.Tf
fmls Vd.Tf, Vn.Tf, Vm.Tf
pmul Vd.8b, Vn.8b, Vm.8b
pmull{2} Vd.8b, Vn.16b, Vm.16b
• T may be 8b, 16b, 4h, 8h, 2s,or 4s.
• Tf may be 2s, 4s,or 2d.
• T2 may be 8b or 16b.
• If x is present, then 0 ×±∞ → ±2 (vector).
• If 2 is present, then
• Td/Ts may be 8h/16b, 4s/8h,or 2d/4s.
• the upper 64 bits of the source vectors are used.
• If 2 is not present, then Td/Ts may be 8h/8b, 4s/4h,or 2d/2s.

