Page 364 - ARM 64 Bit Assembly Language
P. 364
354 Chapter 10
• T must be 8b, 16b, 4h, 8h, 2s, 4s,or 2d.
• Tf must be 2s, 4s,or 2d.
• Td/Ts must be 4h/8b, 8h/16b, 2s/4h, 4s/8h, 1d/2s,or 2d/4s.
10.6.4.2 Operations
Name Effect Description
{f}addp n ← # of elements Add elements of two vectors pair-
for 0 ≤ i< (n ÷ 2) do wise and store the results in another
Vd[i]← Vm[i]+ Vm[i + 1] vector.
end for
for (n ÷ 2) ≤ i< n do
j ← i − (n ÷ 2)
Vd[i]← Vn[j]+ Vn[j + 1]
end for
addlp n ← # of elements Add elements of a vector pairwise
for 0 ≤ i< (n ÷ 2) by 2 do and store the results in another vec-
Vd[i]← tor.
≺Vm[i] + ≺Vm[i + 1]
end for
adalp n ← # of elements Add elements of a vector pairwise
for 0 ≤ i< (n ÷ 2) by 2 do and accumulate the results in another
Vd[i]← Vd[i]+ vector.
≺Vm[i] + ≺Vm[i + 1]
end for
10.6.4.3 Examples
1 addp v1.16b,v6.16b,v8.16b // Add pairwise
2 saddlp v3.2d,v4.4s // Extend and add pairwise
3 uadalp v2.4h,v6.8b // Extend, add pairwise, and accumulate
10.6.5 Absolute difference
These instructions subtract the elements of one vector from another and store or accumulate
the absolute value of the results:
abd Vector integer absolute difference,
fabd Vector floating point absolute difference,
aba Vector integer absolute difference and accumulate,

