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