Add Two Signed Integers With Saturation
SADD
3-205
Instruction Set
SPRU733
Add Two Signed Integers With Saturation
SADD
Syntax
SADD
(.unit)
src1
,
src2
,
dst
.unit = .L1 or .L2
Compatibility
C62x, C64x, C67x, and C67x+ CPU
Opcode
31
29
28
27
23
22
18
17
13
12
11
5
4
3
2
1
0
creg
z
dst
src2
src1
x
op
1 1 0
s p
3
1
5
5
5
1
7
1
1
Opcode map field used...
For operand type...
Unit
Opfield
src1
src2
dst
sint
xsint
sint
.L1, .L2
001 0011
src1
src2
dst
xsint
slong
slong
.L1, .L2
011 0001
src1
src2
dst
scst5
xsint
sint
.L1, .L2
001 0010
src1
src2
dst
scst5
slong
slong
.L1, .L2
011 0000
Description
src1
is added to
src2
and saturated, if an overflow occurs according to the
following rules:
1) If the
dst
is an int and
src1
+
src2
> 2
31
−
1, then the result is 2
31
−
1.
2) If the
dst
is an int and
src1
+
src2
<
−
2
31
, then the result is
−
2
31
.
3) If the
dst
is a long and
src1
+
src2
> 2
39
−
1, then the result is 2
39
−
1.
4) If the
dst
is a long and
src1
+
src2
<
−
2
39
, then the result is
−
2
39
.
The result is placed in
dst
. If a saturate occurs, the SAT bit in the control status
register (CSR) is set one cycle after
dst
is written.
Execution
if (cond)
src1
+s src2
→
dst
else nop