#### 9.3.7.12 Integer Arithmetic Instructions

- Instruction:
**uadd** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**uadd/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Add the `u64`

values `a` and `b`, and store the `u64`

result to `dst`. Overflow will wrap.

- Instruction:
**usub** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**usub/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Subtract the `u64`

value `b` from `a`, and store the
`u64`

result to `dst`. Underflow will wrap.

- Instruction:
**umul** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**umul/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Multiply the `u64`

values `a` and `b`, and store the
`u64`

result to `dst`. Overflow will wrap.

- Instruction:
**ulogand** `s8:``dst` s8:`a` s8:`b`

¶
Place the bitwise `and`

of the `u64`

values `a` and
`b` into the `u64`

local `dst`.

- Instruction:
**ulogior** `s8:``dst` s8:`a` s8:`b`

¶
Place the bitwise inclusive `or`

of the `u64`

values `a`
and `b` into the `u64`

local `dst`.

- Instruction:
**ulogxor** `s8:``dst` s8:`a` s8:`b`

¶
Place the bitwise exclusive `or`

of the `u64`

values `a`
and `b` into the `u64`

local `dst`.

- Instruction:
**ulogsub** `s8:``dst` s8:`a` s8:`b`

¶
Place the bitwise `and`

of the `u64`

values `a` and the
bitwise `not`

of `b` into the `u64`

local `dst`.

- Instruction:
**ulsh** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**ulsh/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Shift the unboxed unsigned 64-bit integer in `a` left by `b`
bits, also an unboxed unsigned 64-bit integer. Truncate to 64 bits and
write to `dst` as an unboxed value. Only the lower 6 bits of
`b` are used.

- Instruction:
**ursh** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**ursh/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Shift the unboxed unsigned 64-bit integer in `a` right by `b`
bits, also an unboxed unsigned 64-bit integer. Truncate to 64 bits and
write to `dst` as an unboxed value. Only the lower 6 bits of
`b` are used.

- Instruction:
**srsh** `s8:``dst` s8:`a` s8:`b`

¶
- Instruction:
**srsh/immediate** `s8:``dst` s8:`a` c8:`b`

¶
Shift the unboxed signed 64-bit integer in `a` right by `b`
bits, also an unboxed signed 64-bit integer. Truncate to 64 bits and
write to `dst` as an unboxed value. Only the lower 6 bits of
`b` are used.