Operations:

Format

Syntax:

Operation:

Operands:

Architecture revision

Opcode

1

satadd.wRd, Rx, Ry

temp = Rx + Ry;
if (Rx[31] AND Ry[31] AND ~temp[31]) OR (~Rx[31] AND ~Ry[31] AND temp[31]) then
      if Rx[31] == 0 then
            Rd = 0x7fffffff;
      else 
            Rd = 0x8000000;
else
      Rd = temp;
{d, x, y} ∈ {0, 1, …, 15}

Rev1+

111

Rx

00000

Ry

000000001100

Rd

3

4

5

4

12

4

Description

Adds the two registers specified and stores the result in destination register. The result is satu- rated if a two's complement overflow occurs. If saturation occurs, the Q flag is set.

Status Flags:

Q:

Q = (Rx[31] AND Ry[31] AND ~temp[31]) OR (~Rx[31] AND ~Ry[31] AND temp[31]) OR Q

V:

V = (Rx[31] AND Ry[31] AND ~temp[31]) OR (~Rx[31] AND ~Ry[31] AND temp[31])

N:

N = Rd[31]

Z:

Z = (Rd[31:0] == 0)

C:

C = 0