
 149
SAM4CP [DATASHEET]
43051E–ATPL–08/14
12.6.8.3 SXTA and UXTA
Signed and Unsigned Extend and Add
Syntax
op
{
cond
} {
Rd
,} 
Rn
, 
Rm
 {, ROR #
n
}
op
{
cond
} {
Rd
,} 
Rn
, 
Rm
 {, ROR #
n
}
where:
op
is one of:
SXTAB Sign extends an 8-bit value to a 32-bit value and add.
SXTAH Sign extends a 16-bit value to a 32-bit value and add.
SXTAB16 Sign extends two 8-bit values to two 16-bit values and add.
UXTAB Zero extends an 8-bit value to a 32-bit value and add.
UXTAH Zero extends a 16-bit value to a 32-bit value and add.
UXTAB16 Zero extends two 8-bit values to two 16-bit values and add.
cond
is an optional condition code, see 
“Conditional Execution”
.
Rd
is the destination register.
Rn
is the first operand register.
Rm
is the register holding the value to rotate and extend.
ROR
 #n
is one of:
ROR #8 Value from 
Rm
 is rotated right 8 bits.
ROR #16 
Value from 
Rm
 is rotated right 16 bits.
ROR #24 
Value from 
Rm
 is rotated right 24 bits.
If ROR #
n
 is omitted, no rotation is performed.
Operation
These instructions do the following:
1.
2.
Rotate the value from 
Rm
 right by 0, 8, 16 or 24 bits.
Extract bits from the resulting value:
SXTAB extracts bits[7:0] from 
Rm
 and sign extends to 32 bits.
UXTAB extracts bits[7:0] from 
Rm
 and zero extends to 32 bits.
SXTAH extracts bits[15:0] from 
Rm
 and sign extends to 32 bits.
UXTAH extracts bits[15:0] from 
Rm
 and zero extends to 32 bits.
SXTAB16 extracts bits[7:0] from 
Rm
 and sign extends to 16 bits, and extracts bits [23:16] from 
Rm
 and sign
extends to 16 bits.
UXTAB16 extracts bits[7:0] from 
Rm
 and zero extends to 16 bits, and extracts bits [23:16] from 
Rm
 and zero
extends to 16 bits.
Adds the signed or zero extended value to the word or corresponding halfword of 
Rn
 and writes the result in 
Rd
.
Restrictions
3.
Do not use SP and do not use PC.
Condition Flags
These instructions do not affect the flags.
Examples
SXTAH  R4, R8, R6, ROR #16 ; Rotates R6 right by 16 bits, obtains bottom
                           ; halfword, sign extends to 32 bits, adds
                           ; R8,and writes to R4
UXTAB  R3, R4, R10         ; Extracts bottom byte of R10 and zero extends
                           ; to 32 bits, adds R4, and writes to R3.