ADD (extended register)
Add (extended register).
Syntax
ADD
Wd|WSP
, Wn|WSP
, Wm
{, extend
{#amount
}} ; 32-bit general registers
ADD
Xd|SP
, Xn|SP
, R
m
{, extend
{#amount
}} ; 64-bit general registers
Where:
Wd|WSP
-
Is the 32-bit name of the destination general-purpose register or stack pointer.
Wn|WSP
-
Is the 32-bit name of the first source general-purpose register or stack pointer.
Wm
-
Is the 32-bit name of the second general-purpose source register.
extend
-
Is the extension to be applied to the second source operand:
- 32-bit general registers
-
Can be one of
UXTB
,UXTH
,LSL|UXTW
,UXTX
,SXTB
,SXTH
,SXTW
orSXTX
.If
orRd
is WSP thenRn
LSL
is preferred rather thanUXTW
, and can be omitted when
is 0. In all other casesamount
is required and must beextend
UXTW
rather thanLSL
. - 64-bit general registers
-
Can be one of
UXTB
,UXTH
,UXTW
,LSL|UXTX
,SXTB
,SXTH
,SXTW
orSXTX
.If
orRd
is SP thenRn
LSL
is preferred rather thanUXTX
, and can be omitted when
is 0. In all other casesamount
is required and must beextend
UXTX
rather thanLSL
.
Xd|SP
-
Is the 64-bit name of the destination general-purpose register or stack pointer.
Xn|SP
-
Is the 64-bit name of the first source general-purpose register or stack pointer.
R
-
Is a width specifier, and can be either
W
orX
. m
-
Is the number [0-30] of the second general-purpose source register or the name ZR (31).
amount
-
Is the left shift amount to be applied after extension in the range 0 to 4, defaulting to 0. It must be absent when
extend
is absent, is required whenextend
isLSL
, and is optional whenextend
is present but not LSL.
Operation
Add (extended register) adds a register value and a sign or zero-extended register value, followed by an optional left shift amount, and writes the result to the destination register. The argument that is extended from the Rm register can be a byte, halfword, word, or doubleword.
, where R
d = R
n + LSL(extend
(R
m), amount
)
is either R
W
or X
.
Usage
The following table shows the valid specifier combinations:
Table 16-2 ADD (64-bit general registers) specifier combinations
R |
extend |
---|---|
W | SXTB |
W | SXTH |
W | SXTW |
W | UXTB |
W | UXTH |
W | UXTW |
X | LSL|UXTX |
X | SXTX |