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 |