SSUB Subtract Two Signed Integers With Saturation
3-234 Instruction Set SPRU733
Subtract Two Signed Integers With SaturationSSUB
Syntax SSUB (.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 xop 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 000 1111
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
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 > 231 1, then the result is 231 1.
2) If the result is an int and src1 src2 < 231, then the result is 231.
3) If the result is a long and src1 src2 > 239 1, then the result is 239 1.
4) If the result is a long and src1 src2 < 239, then the result is 239.
The result is placed in dst. If a saturate occurs, the SAT bit in CSR is set
one cycle after dst is written.
Execution if (cond) src1 s src2 dst
else nop