Page 338 - ARM 64 Bit Assembly Language
P. 338
328 Chapter 10
• <list> specifies the list of registers. There are four list formats:
1. {Vt.T}
2. {Vt.T, V(t+1).T} or {Vt.T-V(t+1).T}
3. {Vt.T, V(t+1).T, V(t+2).T} or {Vt.T-V(t+2).T}
4. {Vt.T, V(t+1).T, V(t+2).T, V(t+3).T} or {Vt.T-V(t+3).T}
The registers must be consecutive. Register 0 is consecutive to register 31.
• T must be b, h, s,or d.
• The immediate index specifies which element of each register is to be used, and must be
appropriate for the data size specified by T. The same element will be used for all regis-
ters.
• Xn is the AARCH64 register containing the base address.
• Xm is the AARCH64 register containing an offset.
• If a register or immediate offset is given, then the base register, Xn, will be post-
incremented.
• The post-increment immediate offset, if present, must be 8, 16, 24, 32, 48, or 64, depend-
ing on the number of elements transferred and the size specified by T.
10.2.1.2 Operations
Name Effect Description
ld<n> tmp ← Xn Load one or more data items into a
incr ← byteSize(T) single lane of one or more registers.
for V ∈ regs(<list>) do
V [index]← Mem[tmp]
tmp ← tmp + incr
end for
if #imm is present then
Xn ← Xn + imm
else
if Xm is specified then
Xn ← Xn + Xm
end if
end if
continued on next page