SSUB
Integer Subtraction With Saturation to Result Size
3-120
Syntax
SSUB (.unit)
src1, src2, dst
.unit = .L1 or .L2
Opcode map field used...
For operand type...
Unit
Opfield
src1
src2
dst
sint
xsint
sint
.L1, .L2
0001111
src1
src2
dst
xsint
sint
sint
.L1, .L2
0011111
src1
src2
dst
scst5
xsint
sint
.L1, .L2
0001110
src1
src2
dst
scst5
slong
slong
.L1, .L2
0101100
Opcode
31
29 28 27
23 22
18 17
creg
z
dst
13 12 11
5
4
3
2
1
0
x
op
1
1
0
s
p
3
5
5
5
7
src2
src1/cst
Description
src2 is subtracted from src1 and is saturated to the result size according to the
following rules:
1) If the result is an int and
src1 – src2 > 2
31
– 1, then the result is 2
31
– 1.
2) If the result is an int and
src1 – src2 < –2
31
, then the result is –2
31
.
3) If the result is a long and
src1 – src2 > 2
39
– 1, then the result is 2
39
– 1.
4) If the result 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 CSR is set
one cycle after
dst is written.
Execution
if (cond)
src1 –s src2
→
dst
else
nop