### 3.9.3. SXT and UXT

Sign extend and Zero extend.

#### Syntax

````SXT``extend`{`cond`} `Rd`, `Rn` {, ROR #`n`}
```
````UXT``extend`{`cond`} `Rd`, `Rn` {, ROR #`n`}
```

Where:

`extend`

Is one of:

`B`

Extends an 8‑bit value to a 32‑bit value.

`H`

Extends a 16‑bit value to a 32‑bit value.

`cond`

Is an optional condition code. See Conditional execution.

`Rd`

Is the destination register.

`Rn`

Is the register holding the value to extend.

`ROR #n`

Is one of:

`ROR #8`

Value from `Rn` is rotated right 8 bits.

`ROR #16`

Value from `Rn` is rotated right 16 bits.

`ROR #24`

Value from `Rn` 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 `Rn` right by 0, 8, 16 or 24 bits.

2. Extract bits from the resulting value:

• `SXTB` extracts bits[7:0] and sign extends to 32 bits.

• `UXTB` extracts bits[7:0] and zero extends to 32 bits.

• `SXTH` extracts bits[15:0] and sign extends to 32 bits.

• `UXTH` extracts bits[15:0] and zero extends to 32 bits.

#### Restrictions

Do not use SP and do not use PC.

#### Condition flags

These instructions do not affect the flags.

#### Examples

```    SXTH  R4, R6, ROR #16  ; Rotate R6 right by 16 bits, then obtain the lower
; halfword of the result and then sign extend to
; 32 bits and write the result to R4.
UXTB  R3, R10          ; Extract lowest byte of the value in R10 and zero
; extend it, and write the result to R3.
```