3.8.3. SXTA and UXTA

Signed and Unsigned Extend and Add.

Syntax

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. If Rd is omitted, the destination register is Rn.

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. Rotate the value from Rm right by 0, 8, 16 or 24 bits.

  2. 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.

  3. Adds the signed or zero extended value to the word or corresponding halfword of Rn and writes the result in Rd.

Restrictions

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.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C
Non-ConfidentialID121118