Page 377 - ARM 64 Bit Assembly Language
P. 377
Advanced SIMD instructions 367
sqrdmulh
Saturating Multiply Double and Round (High).
10.7.4.1 Syntax
sq{r}dmulh Vd.T, Vn.T, Vm.T
sq{r}dmulh Vd.Td, Vn.Td, Vm.Ts[x]
• T must be 4h, 8h, 2s,or 4s.
• Td/Ts must be 4h/h, 8h/h, 2s/s,or 4s/s.
• If Ts is h,then Vm must be in the range v0-v15.
10.7.4.2 Operations
Name Effect Description
sqdmulh n ← #ofelementsin Ts Multiply elements, double the re-
if [x] is present then sults and store the high half in the
Vd[] ← destination vector with saturation.
Vn[] × Vm[x]× 2 n
else
Vd[] ←
Vn[] × Vm[] × 2 n
end if
sqrdmulh n ← #ofelementsin Ts Multiply elements, double the re-
if [x] is present then sults, round, and store the high
Vd[] ← half in the destination vector with
Vn[] × Vm[x]× 2 n saturation.
else
Vd[] ←
Vn[] × Vm[] × 2 n
end if
10.7.4.3 Examples
1 sqrdmulh v1.4h,v6.4h,v8.h[3] // Multiply elements, double, round
2 // saturate, store high half
3 sqdmulh v0.4s,v4.4s,v5.s[2] // Multiply elements, double,
4 // accumulate high half, saturate

