![Intel NIOS II Owner Reference Manual Download Page 175](http://html1.mh-extra.com/html/intel/nios-ii/nios-ii_owner-reference-manual_2071826175.webp)
# Branch if carry generated
Overflow Detection (signed operands):
An overflow is detected when two positives are added and
the sum is negative, or when two negatives are added and
the sum is positive. The overflow condition can control a
conditional branch, as shown in the following code:
add rC, rA, rB
xor rD, rC, rA
xor rE, rC, rB
and rD, rD, rE
blt rD, r0,label
# The original add operation
# Compare signs of sum and rA
# Compare signs of sum and rB
# Combine comparisons
# Branch if overflow occurred
Exceptions
None
Instruction Type
R
Instruction Fields
A
= Register index of operand rA
B
= Register index of operand rB
C
= Register index of operand rC
Bit Fields
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
A
B
C
0x31
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0x31
0
0x3A
8.5.2. addi
Instruction
addi
Operation
rB ← rA + σ(IMM16)
Assembler Syntax
addi rB, rA, IMM16
Example
addi r6, r7, -100
Description
Sign-extends the 16-bit immediate value and adds it to the
value of rA. Stores the sum in rB.
Usage
Carry Detection (unsigned operands):
Following an
addi
operation, a carry out of the MSB can be
detected by checking whether the unsigned sum is less than
one of the unsigned operands. The carry bit can be written
to a register, or a conditional branch can be taken based on
the carry condition. The following code shows both cases:
addi rB, rA, IMM16
cmpltu rD, rB, rA
addi rB, rA, IMM16
bltu rB, rA, label
# The original add operation
# rD is written with the carry bit
# The original add operation
continued...
8. Instruction Set Reference
NII-PRG | 2018.04.18
Nios II Processor Reference Guide
175