Page 376 - ARM 64 Bit Assembly Language
P. 376
366 Chapter 10
• If 2 is present, then Td/Ta/Tb is 4s/8h/h or 2d/4s/s, and the upper half of Vn is used. Oth-
erwise Td/Ta/Tb is 4s/4h/h or 2d/4s/s, and the lower half of Vn is used.
• If the third operand is a scalar ([x] is specified) and Tb is h,then Vm must be in the range
v0-v15.
10.7.3.2 Operations
Name Effect Description
sqdmull if second operand is scalar then Multiply elements, double the re-
Vd[] ← Vn[] × Vm[x]× 2 sults, and store in the destination
else vector with saturation.
Vd[] ← Vn[] × Vm[] × 2
end if
sqdmlal if second operand is scalar then Multiply elements, double the re-
Vd[] ← sults, and add to the destination
Vd[] + Vn[] × Vm[x]× 2 vector with saturation.
else
Vd[] ←
Vd[] + Vn[] × Vm[] × 2
end if
sqdmlsl if second operand is scalar then Multiply elements, double the re-
Vd[] ← sults, and subtract from the destina-
Vd[] − Vn[] × Vm[x]× 2 tion vector with saturation.
else
Vd[] ←
Vd[] − Vn[] × Vm[] × 2
end if
10.7.3.3 Examples
1 sqdmull v1.4s,v6.4h,v8.4h // Multiply elements, double,
2 // saturate
3 sqdmlal2 v0.4s,v4.8h,v5.h[0] // Multiply elements, double,
4 // saturate, accumulate
10.7.4 Saturating multiply and double (high)
These instructions perform multiplication, double the results, perform saturation, and store the
high half of the results:
sqdmulh Saturating Multiply Double (High), and

